Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Fragmento como singleton en Android

Pregunta general ¿Puedo definir Fragmentos como Singletons?

Pregunta específica En mi aplicación tengo una 'FragmentActivity' con un FragmentPager que tiene dos fragmentos, FragmentA y FragmentB .

Definí los fragmentos como Singletons en el FragmentA extiende la clase Fragment :

 private static instance = null; public static FragmentA getInstance() { if (instance == null) { instance = new FragmentA(); } return instance; } private FragmentA() {} 

Y en mi FragmentPagerAdapter :

 @Override public Fragment getItem(int position) { switch(position){ Fragment fragment = null; case 0: fragment = FragmentA.getInstance(); break; case 1: fragment = FragmentB.getInstance(); break; } return fragment; } 

Y así es como hincho el diseño de los fragmentos:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { fragmentView = (RelativeLayout) inflater.inflate(R.layout.fragment_a_layout, container, false); return fragmentView; } 

Mi problema:

Cuando inicio mi aplicación, todo funciona bien. Cuando cierro mi aplicación y luego la vuelvo a iniciar, no veo ambos fragmentos.

  • Espacio entre elementos del indicador
  • Android: desplazamiento ViewPager basado en la velocidad
  • 2 ViewPager no se desplaza en Android 2.3
  • Animación de puntos mediante el buscapersonas
  • ¿Cómo puedo desactivar la precarga en un viewpager?
  • Android CoordinatorLayout + AppbarLayout + Viewpager siempre desplazándose
  • MultiViewPager + ZoomOutPageTransformer no funciona correctamente
  • Android ViewPager: Actualización de fragmentos fuera de la pantalla pero en caché en ViewPager
  • One Solution collect form web for “Fragmento como singleton en Android”

    Los fragmentos están destinados a ser componentes reutilizables de las aplicaciones. No deberías usarlos como singletons, sino que deberías implementar Fragment.SavedState o onSavedInstanceState.

     public class YourFragment extends Fragment { // Blah blah blah you have a lot of other code in this fragment // but here is how to save state @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("curChoice", mCurCheckPosition); } @Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // savedInstanceState will have whatever you left in the outState bundle above } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.