Comprobar si existe un fragmento y reutilizarlo
Estoy usando el siguiente código para crear un fragmento cada vez que el usuario haga clic en un elemento en una vista de lista. Pero de esta manera el fragmento se crea en cada clic del usuario. Lo que quiero es reutilizar el fragmento antiguo (si existe) y volver a cargar su contenido (no crear uno nuevo).
MagazineViewFragment fragment = new MagazineViewFragment(); fragment.openStream(itemSelected); FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.container, fragment) .commit();
¿Como lo puedo hacer?
- ¿Cómo clasificar las fechas de la fecha actual a la antigua en Android o Java?
- ¿Qué es "pools de asignación para objetos temporales"?
- Método opcional en la interfaz Java
- Error de Jenkins Execute: java.io.IOException ant build
- Falta el menú "Annotation processing" en eclipse
- No se puede generar clave en el almacén de claves de Android
- Parse json array android
- SetX (), setTranslationX (), setY () y setTranslationY ()
- Cajón No se muestra el cajón de navegación de salida
- Uso de la gestión de excepciones globales con "setUncaughtExceptionHandler" y "Toast"
- El título de ViewPager no aparece hasta que lo deslice
- Obtener coordenadas táctiles no es preciso en ImageView FloodFill Algorithm
- Error sobre el contexto FLAG_ACTIVITY_NEW_TASK
Hay varias maneras, probablemente la más fácil es comprobar si el Fragmento actual en su container
es una instancia de FragmentXYZ (en su caso MagazineViewFragment
).
Ejemplo
Fragment mFragment = getFragmentManager().findFragmentById(R.id.container); if (mFragment instanceof MagazineViewFragment) return;
Algo como esto podría ayudar:
getFragmentManager().findFragmentById(fragmentId);
No olvide el cheque nulo.
Agregar etiqueta cuando llama a su fragmento de la actividad:
FragmentManager fm = getFragmentManager(); Fragment fragment = fm.findFragmentByTag( MagazineViewFragment.TAG); if (fragment == null) { MagazineViewFragment fragment = new MagazineViewFragment(); fragment.openStream(itemSelected); getFragmentManager() .beginTransaction() .add(R.id.container, fragment, MagazineViewFragment.TAG) .commit(); }
Si sólo necesita actualizar itemSelected – vea emisiones o escuchas.
- Obtener el permiso de Android dynamiclly
- AndroidAnnotations cómo agregar código init después de onCreate