7

Projemde 5 parça bulunan bir gezinti çekmecesi kullanıyorum. Bir parçada, 2 Fragman içeren TabLayout adlı tasarım destek kütüphanesinde var. Her şey iyi çalışıyor, TabLayout'a sahip olan ve ayrılan parçayı bıraktığım zamanlar hariç tüm içerikler gitti.Android TabLayout, parça değiştirildikten sonra içeriği göstermiyor

TabLayout'taki her parçasında bir ListView içeren bir SwipeRefreshLayout var, her ikisi de geçiş sırasında hiçbir şey göstermiyor.

Ayrıca TabLayout'un garip davranmaya başladığını fark ettim. garip tarafından beyaz gösterge atlamaya başlar, hala iki sekmenin ortasında tutabilirsiniz ...

TabLayout'un bu kadar garip davrandığı bir şeyi mi özlüyorum?

burada kod: TabLayout içeriyor Fragment: Ben bir singleton olarak MainFragment kullanarak ve en kısa sürede kullanıcı gezinme çekmeceye seçer gibi onunla içeriği değiştirerek am

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); 
     } 
    } 
} 

. Ona geçtiğimde, her şey iyi çalışıyor, ListView verilerini içeriyor, SwipeRefreshLayout iyi çalışıyor. Navigasyon çekmecesini kullanarak başka bir parçaya geçtiğimde ve bu parçaya geri dönersek, yukarıda açıklandığı gibi hiçbir şey göstermez.

DÜZENLEME: Bu konuda sorun yaşayan tek kişi ben miyim? Eğer birisinin problemleri varsa, bunu nasıl düzelttiler?

cevap

16

ViewPager'ı kullandığımda ve tekrar açtığımda, getSupportFragmentManager kullanıldığında geçiş yapana kadar boş parçalarım vardı.

Kullanmaya çalışın: getChildFragmentManager.

+2

Çok teşekkür ederim! Günümü kurtardın. Birçok saat boyunca uğraşıyordum ... –

+0

Benim için çalışıyor. Teşekkürler. –

+0

Evet, bu bana yardımcı oldu, getSupportFragmentManager çalışmıyordu ama getChildFragmentManager mükemmel çalışıyor. –

İlgili konular