Android TabLayout ya no muestra contenido tan pronto como se cambia el fragmento
Estoy usando un cajón de navegación en mi proyecto, con 5 fragmentos. En un fragmento, la biblioteca de soporte de diseño introdujo TabLayout, que incluye 2 Fragmentos. Todo funciona bien, excepto cuando dejo el fragmento que tiene el TabLayout y vuelvo a él, todo el contenido se ha ido.
En cada fragmento del TabLayout tengo un SwipeRefreshLayout con un ListView, ambos no muestran nada al cambiar.
También noté que el TabLayout comienza a actuar de manera extraña. por extraño quiero decir que el indicador blanco comienza a saltar, puedes mantenerlo quieto en el medio de las dos pestañas ...
Entonces, ¿me estoy perdiendo algo que el TabLayout actúa tan extraño?
El código aquí: Fragmento que contiene el 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);
}
}
}
Estoy usando MainFragment como un singleton y reemplazando el contenido con él tan pronto como el usuario lo seleccione en el cajón de navegación. Cuando cambio a él, todo funciona bien, ListView contiene sus datos, SwipeRefreshLayout funciona bien. Cuando cambio a otro fragmento con el cajón de navegación y vuelvo a este fragmento, no muestra nada, como se describió anteriormente.
EDITAR: ¿Soy el único que tiene problemas con esto? Si alguien tuvo problemas, ¿cómo lo solucionaron?