2016-06-16 74 views
0

我在使用TabLayout實現片段時遇到了一些問題。我有3個選項卡,並且我對某些值和Google地圖(v2)進行了硬編碼。當我運行程序時,它顯示了三個帶有所有合併值和googlemaps(v2)的選項卡。當我第一次和第二次刷卡時,它工作正常。但是當我第三次刷卡它顯示佈局充氣錯誤。請幫助我..TabLayout片段中的錯誤

在這裏,我附上堆棧跟蹤完整的代碼。

這是我的第一個片段。

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爲FirstFragment:

<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->佈局1,用於Adapter2->佈局2)。但是我在這裏粘貼一個佈局的代碼,因爲它們都具有相同的值。

我一直在從這些從昨天..我已經使用Google搜索答案我有這樣的答案,但不能得到解決方案。

這是我的錯誤跟蹤:

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 

請幫助我.. 預先感謝..............

+0

請提供您正在使用的代碼和可能的錯誤消息。 –

+0

由於您沒有通過第二次滑動獲得任何錯誤,因此您的選項卡已正確創建(通過第二次滑動第三個選項卡也會創建)。所以一個原因是標籤數量不正確。我的建議:在android studio中製作一個新項目並添加一個選項卡活動。然後改變它以匹配你的項目。如果你得到更多細節,也許我可以更好地幫助。 – Behy

+0

@Behy感謝您的快速回復..我在這裏粘貼了我的完整代碼..請告訴我我在哪裏做錯 –

回答