7

Tôi đang sử dụng ngăn điều hướng trong dự án của mình, với 5 đoạn trong đó. Trong một đoạn tôi có trong thư viện hỗ trợ thiết kế giới thiệu TabLayout, bao gồm 2 mảnh. Tất cả các công trình tốt, ngoại trừ khi tôi rời khỏi mảnh có TabLayout và chuyển trở lại nó, tất cả các nội dung đã biến mất.Android TabLayout không hiển thị nội dung nữa ngay khi phân đoạn được chuyển thành

Trong mỗi đoạn trong TabLayout tôi có một SwipeRefreshLayout với một ListView trong nó, cả hai đều không hiển thị bất cứ điều gì khi chuyển đổi.

Tôi cũng nhận thấy TabLayout bắt đầu hoạt động lạ. bởi lạ tôi có nghĩa là chỉ báo màu trắng bắt đầu nhảy, bạn có thể giữ nó vẫn ở giữa hai tab ...

Vì vậy, tôi thiếu một cái gì đó mà TabLayout hoạt động rất lạ?

Mã này ở đây: Fragment chứa TabLayout:

public class MainFragment extends Fragment { 
    private static String locale; 
    private static ViewPager viewPager; 
    private static TabLayout tabLayout; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     Utils.changeLanguage(getActivity()); 

     final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.MyStyle); 

     LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper); 

     View view = localInflater.inflate(R.layout.fragment1, container, false); 

     viewPager = (ViewPager) view.findViewById(R.id.viewpager); 
     tabLayout = (TabLayout) view.findViewById(R.id.tabs); 

     return view; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     setupViewPager(viewPager); 
     tabLayout.setupWithViewPager(viewPager); 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     LinesTabsAdapter adapter = new LinesTabsAdapter(getActivity().getSupportFragmentManager()); 
     adapter.addFragment(new Fragment1(), "Fragment 1"); 
     adapter.addFragment(new Fragment2(), "Fragment2"); 
     viewPager.setAdapter(adapter); 
    } 


    public static class Fragment extends Fragment { 
     private static List<RowItems1> rowItems; 
     private static ListView listview; 
     private static Adapter1 adapter; 

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

      View view = inflater.inflate(R.layout.activity1, container, false); 

      listview = (ListView) view.findViewById(R.id.listview1); 

      return view; 
     } 

     @Override 
     public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 

      updateInfo(true); 
     } 

     public static void updateInfo() { 
      rowItems = new ArrayList<>(); 
      adapter = new Adapter1(context, rowItems); 
      listview.setAdapter(adapter); 
     } 
    } 

    public static class Fragment2 extends Fragment { 
     private static List<RowItems2> rowItems; 
     private static ListView listview; 
     private static Adapter1 adapter; 

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

      View view = inflater.inflate(R.layout.activity_lines_all, container, false); 

      listview = (ListView) view.findViewById(R.id.activity2); 

      return view; 
     } 

     @Override 
     public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 

      updateInfo(true); 
     } 

     public static void updateInfo() { 
      rowItems = new ArrayList<>(); 
      adapter = new Adapter2(context, rowItems); 
      listview.setAdapter(adapter); 
     } 
    } 
} 

Tôi đang sử dụng MainFragment như một singleton và thay thế nội dung với nó càng sớm càng người sử dụng chọn nó trong ngăn điều hướng. Khi tôi chuyển sang nó, mọi thứ hoạt động tốt, ListView chứa dữ liệu của nó, SwipeRefreshLayout hoạt động tốt. Khi tôi chuyển sang một đoạn khác bằng ngăn điều hướng và chuyển về đoạn này, nó sẽ không hiển thị gì, như được mô tả ở trên.

EDIT: Tôi có phải là người duy nhất gặp sự cố với điều này không? Nếu có ai gặp vấn đề, họ đã sửa nó như thế nào?

Trả lời

16

Khi tôi sử dụng viewPager và quay lại, tôi đã có các mảnh trống cho đến khi chuyển đổi khi tôi sử dụng getSupportFragmentManager.

Hãy thử sử dụng: getChildFragmentManager.

+2

Cảm ơn bạn rất nhiều !! Bạn đã cứu ngày của tôi. Tôi đã vật lộn trong nhiều giờ ... –

+0

Làm việc cho tôi. Cảm ơn. –

+0

Vâng, điều này đã giúp tôi, getSupportFragmentManager không hoạt động nhưng getChildFragmentManager đang hoạt động hoàn hảo. –

Các vấn đề liên quan