TabLayout 片段错误

Error in TabLayout Fragment

我在使用 TabLayout 实现片段方面遇到了一些问题。我有 3 个选项卡,我对一些值和 googlemaps(v2) 进行了硬编码。当我 运行 编程时,它显示了三个带有所有硬编码值和 googlemaps(v2) 的选项卡。当我第一次和第二次滑动时,它工作正常。但是当我第三次滑动时,它显示了 Layout Inflate 错误。请帮助我..

在这里,我附上了带有堆栈跟踪的完整代码。

这是我的第一个片段。

public class RequestedBookingsFragment extends Fragment {
    SharedPreferences prefs;
    SharedPreferences.Editor editor_prefs;
    TextView tv;
    GoogleMap map;
    RecyclerView rb_recycler_view;
    List<PojoFromToLatLng> pojoFromToLatLngs;
    LinearLayoutManager llm;


    public RequestedBookingsFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.fragment_requested_bookings, container, false);

        tv = (TextView) rootView.findViewById(R.id.tv_id);
        rb_recycler_view = (RecyclerView) rootView.findViewById(R.id.recyler_rb);


        llm = new LinearLayoutManager(getActivity());
        rb_recycler_view.setLayoutManager(llm);
        rb_recycler_view.setHasFixedSize(true);
        intializeData();
        initializeAdapter();
        return rootView;

    }

    private void intializeData() {
        pojoFromToLatLngs = new ArrayList<>();
        pojoFromToLatLngs.add(new PojoFromToLatLng("JayaMahal Office", "Koramangala", "22:22:22", "Accepted"));

    }

    private void initializeAdapter() {
        RecyclerCardMapAdapter adapter = new RecyclerCardMapAdapter(pojoFromToLatLngs);

        rb_recycler_view.setAdapter(adapter);
    }

FirstFragment 的适配器:

public class RecyclerCardMapAdapter extends RecyclerView.Adapter<RecyclerCardMapAdapter.MapBookingsHolder> {
    GoogleMap mMap;
    public class MapBookingsHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        CardView main_card, sub_card;
        TextView from_address_text,to_address_text, time_tv, booking_status_tv;
        Button accept_booking_btn;


        public MapBookingsHolder(View itemView) {
            super(itemView);
            from_address_text = (TextView) itemView.findViewById(R.id.from_rb);
            to_address_text = (TextView) itemView.findViewById(R.id.to_rb);
            time_tv = (TextView) itemView.findViewById(R.id.time_id_rb);
            booking_status_tv = (TextView) itemView.findViewById(R.id.booking_status_id_rb);
            accept_booking_btn = (Button) itemView.findViewById(R.id.bookings_accept_button_rb);
        }

        @Override
        public void onClick(View v) {

        }


    }
    List<PojoFromToLatLng> pojoFromToLatLngs;
    RecyclerCardMapAdapter(List<PojoFromToLatLng> pojoFromToLatLngs1)
    {

        this.pojoFromToLatLngs=pojoFromToLatLngs1;
    }

    @Override
    public RecyclerCardMapAdapter.MapBookingsHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.requested_bookings_card_map, parent,false);
        MapBookingsHolder mbh=new MapBookingsHolder(v);
        return mbh;
    }

    @Override
    public void onBindViewHolder(RecyclerCardMapAdapter.MapBookingsHolder holder, int position) {

    }


    @Override
    public int getItemCount() {
        return pojoFromToLatLngs.size();
    }
}

XML 对于第一个片段:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.cabbi.appstract.RequestedBookingsFragment">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Requested Bookings"
        android:id="@+id/tv_id"
        android:textSize="20dp"/>


    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/recyler_rb">

    </android.support.v7.widget.RecyclerView>

</LinearLayout>
</FrameLayout>

这是我的第二个片段。

     public class AcceptedBookingsFragment extends Fragment {
    RecyclerView ab_recycler_view;
    List<PojoFromToLatLng> pojoFromToLatLngs;
    LinearLayoutManager llm;


    public AcceptedBookingsFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
      View rootView = inflater.inflate(R.layout.fragment_accepted_bookings, container, false);
        ab_recycler_view = (RecyclerView) rootView.findViewById(R.id.recyler_ab);
        llm = new LinearLayoutManager(getActivity());
        ab_recycler_view.setLayoutManager(llm);
        ab_recycler_view.setHasFixedSize(true);
        intializeData();
        initializeAdapter();
        return rootView;
    }

    private void intializeData() {
        pojoFromToLatLngs = new ArrayList<>();
        pojoFromToLatLngs.add(new PojoFromToLatLng("JayaMahal Office", "Koramangala", "22:22:22", "Accepted"));

    }

    private void initializeAdapter() {
        AcceptingBookingAdapter adapter = new AcceptingBookingAdapter(pojoFromToLatLngs);
        //  places_type_list_recyclerView.addItemDecoration(new SimpleDividerItemDecoration(this));
        ab_recycler_view.setAdapter(adapter);
    }

}

第二个片段的适配器:

public class AcceptingBookingAdapter extends RecyclerView.Adapter<AcceptingBookingAdapter.MapBookingsHolder> {
    GoogleMap mMap;
    public class MapBookingsHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        CardView main_card, sub_card;
        TextView from_address_text,to_address_text, time_tv, booking_status_tv;
        Button accept_booking_btn;


        public MapBookingsHolder(View itemView) {
            super(itemView);
            from_address_text = (TextView) itemView.findViewById(R.id.from_ab);
            to_address_text = (TextView) itemView.findViewById(R.id.to_ab);
            time_tv = (TextView) itemView.findViewById(R.id.time_id_ab);
            booking_status_tv = (TextView) itemView.findViewById(R.id.booking_status_id_ab);
            accept_booking_btn = (Button) itemView.findViewById(R.id.bookings_accepted_button_ab);
        }

        @Override
        public void onClick(View v) {

        }

//        @Override
//        public void onMapReady(GoogleMap googleMap) {
//            mMap = googleMap;
//
//        }
    }
    List<PojoFromToLatLng> pojoFromToLatLngs;
    AcceptingBookingAdapter(List<PojoFromToLatLng> pojoFromToLatLngs1)
    {

        this.pojoFromToLatLngs=pojoFromToLatLngs1;
    }

    @Override
    public AcceptingBookingAdapter.MapBookingsHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.accetpted_booking_cards_map, parent,false);
        MapBookingsHolder mbh=new MapBookingsHolder(v);
        return mbh;
    }

    @Override
    public void onBindViewHolder(AcceptingBookingAdapter.MapBookingsHolder holder, int position) {

    }


    @Override
    public int getItemCount() {
        return pojoFromToLatLngs.size();
    }
}

XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.cabbi.appstract.AcceptedBookingsFragment">

    <!-- TODO: Update blank fragment layout -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <!-- TODO: Update blank fragment layout -->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Accpeted Bookings"
            android:id="@+id/tv_id1"
            android:textSize="20dp"/>


        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/recyler_ab">

        </android.support.v7.widget.RecyclerView>

    </LinearLayout>
</FrameLayout>

第三个片段:

public class AllBookingsFragment extends Fragment {
    TextView tv;
    RecyclerView allb_recycler_view;
    List<PojoFromToLatLng> pojoFromToLatLngs;
    LinearLayoutManager llm;


    public AllBookingsFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView =  inflater.inflate(R.layout.fragment_all_bookings, container, false);
        allb_recycler_view = (RecyclerView) rootView.findViewById(R.id.recyler_allb);
        llm = new LinearLayoutManager(getActivity());
        allb_recycler_view.setLayoutManager(llm);
        allb_recycler_view.setHasFixedSize(true);
        intializeData();
        initializeAdapter();
        return rootView;
    }
    private void intializeData() {
        pojoFromToLatLngs = new ArrayList<>();
        pojoFromToLatLngs.add(new PojoFromToLatLng("JayaMahal Office", "Koramangala", "22:22:22", "Accepted"));

    }

    private void initializeAdapter() {
        AllBookingsAdapter adapter = new AllBookingsAdapter(pojoFromToLatLngs);
        //  places_type_list_recyclerView.addItemDecoration(new SimpleDividerItemDecoration(this));
        allb_recycler_view.setAdapter(adapter);
    }

}

第三个片段的适配器:

public class AllBookingsAdapter extends RecyclerView.Adapter<AllBookingsAdapter.MapBookingsHolder> {
    GoogleMap mMap;
    public class MapBookingsHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        CardView main_card, sub_card;
        TextView from_address_text,to_address_text, time_tv, booking_status_tv;
        //Button accept_booking_btn;


        public MapBookingsHolder(View itemView) {
            super(itemView);
            from_address_text = (TextView) itemView.findViewById(R.id.from_allb);
            to_address_text = (TextView) itemView.findViewById(R.id.to_allb);
            time_tv = (TextView) itemView.findViewById(R.id.time_id_allb);
            booking_status_tv = (TextView) itemView.findViewById(R.id.booking_status_id_allb);
            //accept_booking_btn = (Button) itemView.findViewById(R.id.bookings_accept_button_allb);
        }

        @Override
        public void onClick(View v) {

        }

//        @Override
//        public void onMapReady(GoogleMap googleMap) {
//            mMap = googleMap;
//
//        }
    }
    List<PojoFromToLatLng> pojoFromToLatLngs;
    AllBookingsAdapter(List<PojoFromToLatLng> pojoFromToLatLngs1)
    {

        this.pojoFromToLatLngs=pojoFromToLatLngs1;
    }

    @Override
    public AllBookingsAdapter.MapBookingsHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.all_bookings_card_map, parent,false);
        MapBookingsHolder mbh=new MapBookingsHolder(v);
        return mbh;
    }

    @Override
    public void onBindViewHolder(AllBookingsAdapter.MapBookingsHolder holder, int position) {

    }


    @Override
    public int getItemCount() {
        return pojoFromToLatLngs.size();
    }
}

XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.cabbi.appstract.AllBookingsFragment">

    <!-- TODO: Update blank fragment layout -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <!-- TODO: Update blank fragment layout -->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="All Bookings"
            android:id="@+id/tv_id2"
            android:textSize="20dp"/>


        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/recyler_allb">

        </android.support.v7.widget.RecyclerView>

    </LinearLayout>

</FrameLayout>

我正在使用上面提到的 AdapterClass 在所有片段中膨胀以下布局。

充气布局是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="350dp"
        android:id="@+id/cardview_map_rb"
        android:background="@color/colorAccent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <fragment
                android:id="@+id/maps_inside_card_rb"
                android:name="com.google.android.gms.maps.SupportMapFragment"
                android:layout_width="match_parent"
                android:layout_height="200dp"/>

            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="147dp"
                android:id="@+id/sub_card_for_locs_rb">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/from_rb"
                        android:text="JAYAMAHAL"/>

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/to_rb"
                        android:text="EJIPURA"/>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:id="@+id/time_id_rb"
                            android:textSize="19dp"
                            android:text="23:55:22 15-06-2016"/>
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:id="@+id/booking_status_id_rb"
                            android:text="Pending"
                            android:textSize="19dp"
                            android:layout_marginLeft="60dp"/>
                    </LinearLayout>

                    <android.support.v7.widget.AppCompatButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/bookings_accept_button_rb"
                        android:text="Accept"/>

                </LinearLayout>
            </android.support.v7.widget.CardView>

        </LinearLayout>
    </android.support.v7.widget.CardView>


</LinearLayout>

我创建了三个具有相同数据但 ID 不同的布局(例如:对于 Adapter1->layout1,对于 Adapter2->layout2)。但在这里我粘贴了一种布局的代码,因为它们都有相同的值。

我从昨天开始就一直在研究这些问题。我用谷歌搜索了答案我有 SO 答案但无法获得解决方案。

这是我的错误跟踪:

E/AndroidRuntime: FATAL EXCEPTION: main
                                                                   Process: com.cabbi.appstract, PID: 5522
                                                                   android.view.InflateException: Binary XML file line #18: Error inflating class fragment
                                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
                                                                       at com.cabbi.appstract.RecyclerCardMapAdapter.onCreateViewHolder(RecyclerCardMapAdapter.java:57)
                                                                       at com.cabbi.appstract.RecyclerCardMapAdapter.onCreateViewHolder(RecyclerCardMapAdapter.java:20)
                                                                       at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5482)
                                                                       at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4707)
                                                                       at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617)
                                                                       at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1994)
                                                                       at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1390)
                                                                       at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1353)
                                                                       at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:574)
                                                                       at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3028)
                                                                       at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2625)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
                                                                       at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
                                                                       at android.widget.LinearLayout.measureVertical(LinearLayout.java:760)
                                                                       at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
                                                                       at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1560)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:846)
                                                                       at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:512)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
                                                                       at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:668)
                                                                       at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90)
                                                                       at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1192)
                                                                       at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:733)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1075)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
                                                                       at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
                                                                       at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
                                                                       at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
                                                                       at android.widget.LinearLayout.measureVertical(LinearLayout.java:760)
                                                                       at android.widget.LinearLayout.onMeasure(LinearLayout.java:629)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
                                                                       at android.widget.FrameLayout.onMeasure(FrameLayout.java:465)
                                                                       at android.view.View.measure(View.java:17915)
                                                                       at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5698)
                                                                       at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1692)
                                                                    at android.widget.L

请帮帮我.. 提前致谢......

您的地图视图造成了问题,您应该使用 com.google.android.gms.maps.MapView 代替 xml.

中的片段

在此处阅读更多内容

Android - android.view.InflateException: Binary XML file line #8: Error inflating class fragment