Fragmento que no llama onPause o onStop cuando se usa replace

Tengo este extraño problema de que mis fragmentos no están llamando a ninguno de los métodos de ciclo de vida como onPause y onStop cuando lo reemplazo con otro fragmento. Reemplazo el fragmento como este

public static void replaceFragment(Activity activity, int layoutId, Fragment fragment, String title, String shortTitle) { FragmentTransaction transaction = activity.getFragmentManager().beginTransaction().replace(layoutId, fragment); transaction.addToBackStack(title); transaction.setBreadCrumbTitle(title); transaction.setBreadCrumbShortTitle(shortTitle); transaction.commit(); activity.getFragmentManager().executePendingTransactions(); } 

Creo que es de alguna manera mantener mi fragmento vivo, incluso si popBackStack causa después de reemplazar el mismo fragmento de nuevo después de que se han mostrado los anteriores antes de que también llama a la onStop antes onStart?

Resolví el problema 🙂

Fue porque mi aplicación en la tableta agregó dos fragmentos en un fragmento principal, y cuando luego reemplazó el fragmento que contiene los dos otros fragmentos de ellos onPause y onStop no se llaman por lo que llaman a sus onStop en los fragmentos principales onStop He resuelto este problema.

Gracias a todos por tratar de ayudarme no sabía que el método que estaba usando was'n realmente el problema, pero que los fragmentos de los niños no se destruyen con sus padres!

Utilizando su código exacto dentro de una clase abstracta, no puedo replicar este problema. He creado una clase abstracta, ReplaceFragment .

Mi clase Main extiende FragmentActivity y configura la vista de contenido del fragmento.

Dentro de la clase Fragmento, configuro un ListView . Cuando se hace clic en un elemento de la lista, estoy haciendo lo siguiente:

  getListView().setItemChecked(index, true); // Check what fragment is currently shown, replace if needed. DetailsFragment details = (DetailsFragment) getFragmentManager().findFragmentById(R.id.details); if (details == null || details.getShownIndex() != index) { details = DetailsFragment.newInstance(index); ReplaceFragment.replaceFragment(...); } 

Mi salida en LogCat en cada clic es:

10-07 12: 19: 07.688: V / FragmentManager (861): quitar: DetailsFragment {40527d48 # 1 id = 0x7f040003} anidar = 2

10-07 12: 19: 07.688: V / FragmentManager (861): movefrom RESUMED: DetailsFragment {40527d48 # 1 id = 0x7f040003}

10-07 12: 19: 07.688: E / DetailsFragment (861): Detalles onPause ()

10-07 12: 19: 07.688: V / FragmentManager (861): movefrom STARTED: DetailsFragment {40527d48 # 1 id = 0x7f040003}

10-07 12: 19: 07.688: E / DetailsFragment (861): Detalles onStop ()

10-07 12: 19: 07.699: V / FragmentManager (861): movefrom STOPPED: DetailsFragment {40527d48 # 1 id = 0x7f040003}

Publique más detalles de su implementación para que pueda ayudarle más.

  • Cómo establecer una etiqueta en un fragmento en Android
  • ¿Qué hace exactamente FragmentManager y FragmentTransaction exactamente?
  • FragmentManager reemplazar fragmentos sin llamar onPause () onDestroy () para el fragmento antiguo
  • Problema de implementación de fragmentos Android
  • Android: Administrador de fragmentos se convierte en nulo
  • Guardar y restaurar el estado de la interfaz de usuario del fragmento cuando se empuja y sale del backstack
  • Dónde llamar a getChildFragmentManager ()?
  • Pop pila trasera sin onresume llamado
  • Android: remove () Fragmento -> add () nuevo Fragmento de la misma clase otra vez -> onCreateView y onActivityCreated no llamado?
  • Android: flujo maestro / detallado (panel dual) con 1 actividad
  • Android.support.v4.app.FragmentManager y android.app.FragmentManager en ViewPager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.