7

Sto utilizzando un cassetto di navigazione nel mio progetto, con 5 frammenti in esso. In un frammento ho inserito nella libreria di supporto alla progettazione TabLayout, che include 2 frammenti. Funziona tutto bene, tranne quando esco dal frammento che contiene TabLayout e torno ad esso, tutto il contenuto è sparito.TabLayout Android non visualizza più i contenuti non appena viene sostituito il frammento

In ogni frammento di TabLayout ho un SwipeRefreshLayout con un ListView in esso, entrambi non mostrano nulla al passaggio.

Ho anche notato che TabLayout inizia a comportarsi in modo strano. per strano intendo che l'indicatore bianco inizia a saltare, sei in grado di tenerlo fermo nel mezzo delle due schede ...

Quindi mi manca qualcosa che il TabLayout si comporta in modo strano?

Il codice qui: frammento che contiene la 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); 
     } 
    } 
} 

Sto usando la MainFragment come singleton e sostituendo il contenuto con appena l'utente seleziona nel cassetto navigazione. Quando passo ad esso, tutto funziona, il ListView contiene i suoi dati, il SwipeRefreshLayout funziona bene. Quando passo a un altro frammento usando il pannello di navigazione e torno a questo frammento, non visualizza nulla, come descritto sopra.

EDIT: Sono l'unico che ha problemi con questo? Se qualcuno ha avuto problemi, come hanno risolto il problema?

risposta

16

Quando ho usato viewPager e di nuovo su di esso, ho avuto frammenti vuoti fino a passare quando ho usato getSupportFragmentManager.

Prova a utilizzare: getChildFragmentManager.

+2

Grazie mille !! Mi hai salvato la giornata. Ho faticato per molte ore ... –

+0

Ha funzionato per me. Grazie. –

+0

Sì, questo mi ha aiutato, getSupportFragmentManager non funzionava, ma getChildFragmentManager funziona perfettamente. –

Problemi correlati