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?

3 Solutions collect form web for “Comprobar si existe un fragmento y reutilizarlo”

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.

  • Cómo hacer HttpResponse trabajo más rápido?
  • ¿Se llamará a este método? (Todavía necesita una respuesta aceptada ... Ver detalles en la respuesta)
  • GetWidth no devuelve valor diferente después de escalar
  • ¿Cómo comprobar la contraseña de un EditView?
  • Crear una instancia de una clase abstracta en Kotlin
  • Eliminar los acentos de String
  • Android - ¿Cómo puedo "iniciar" o "inicializar" un Fragmento de una actividad?
  • Android utilizando una estrategia de tiempo de ejecución para admitir diferentes niveles de API?
  • No se puede leer socket InputStream en Jelly Bean
  • ¿Por qué sólo el subproceso de interfaz de usuario en Android puede actualizar la interfaz de usuario?
  • Cómo comparar la hora actual con el tiempo almacenado en la base de datos en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.