java.lang.IllegalStateException (No se puede realizar esta acción después de onSaveInstanceState)

Estoy recibiendo este error con el siguiente mensaje en un escenario diferente:

  • La actividad ha sido destruida y
  • No se puede realizar esta acción después de onSaveInstanceState

Estoy escribiendo una aplicación donde Dos Actividad interactúan entre sí. Actividad- Lanzamiento Actividad-B mediante Intención. Esta clase de Actividad-B tiene dos hijos de fragmento. Fragmento-A usa el método público de actividad para lanzar otro Fragmento-B .

public void beginTransaction(ID id, Bundle bundle) { Fragment fragment = getFragmentItem(id); // In case this activity was started with special instructions from an Intent, // pass the Intent's extras to the fragment as arguments fragment.setArguments(bundle); // Add the fragment to the 'fragment_container' FrameLayout fragmentManager.beginTransaction() .add(R.id.fragment_container, fragment).commitAllowingStateLoss(); } 

Fragmento-B cada vez que termine la llamada () para matar a la Actividad-B, por lo que el control volverá a Actividad-A de nuevo. Y repetir el mismo proceso. Después de hacer 2-3 veces estoy recibiendo:

java.lang.IllegalStateException: No se puede realizar esta acción después de OnSaveInstanceState E / AndroidRuntime (9008): en android.support.v4.app.FragmentManagerImpl.checkStateLoss (FragmentManager.java:1354) E / AndroidRuntime (9008): en android.support .v4.app.FragmentManagerImpl.enqueueAction (FragmentManager.java:1372)

así que para evitarlo sigo https://stackoverflow.com/a/10261438/2624806 y empezó a darme

Java.lang.IllegalStateException: La actividad ha sido destruida E / AndroidRuntime (9235): en android.support.v4.app.FragmentManagerImpl.enqueueAction (FragmentManager.java:1376) E / AndroidRuntime (9235): en android.support.v4. app.BackStackRecord.commitInternal (BackStackRecord.java:595)

cualquier sugerencia de lo que me falta aquí.

CONSEGUIRLO Conseguí la solución … es el error que sucede en la transacción para agregar el fragmento. Utilicé .add en su lugar para usar .replace (como mi requisito de no mantener la pila) y usar commitAllowTransaction para confirmarlo. También leí http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html y parece que lo que hice podría ser costoso, pero para la transacción de fragmento normal mención work-around gran trabajo.

Como no puedo comentar sobre su pregunta debido a menos punto de reputación. Supongo que este es su método público para cambiar el fragmento.

 public void beginTransaction(ID id, Bundle bundle) 

En este método cada vez que agrega fragmento a actividad. Así que si usted está agregando fragmento primera vez esto funcionará bien, pero en caso de segundo fragmento debe utilizar reemplazar no agregar

  fragmentManager.beginTransaction() .replace(R.id.fragment_container, fragment).commitAllowingStateLoss(); 

Creo que después de hacer esto no debe enfrentar este problema. o puede usar 'reemplazar' tanto el primer como el segundo fragmento. Espero que esto ayude.

  • "No se puede realizar esta acción después de onSaveInstanceState" - ¿por qué recibo esta excepción del método onResume de mi actividad?
  • Android: no se puede destruir la actividad después de terminar, causada por IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState
  • OnViewCreated - lugar equivocado para reemplazar el fragmento?
  • Android GoogleMaps V2 MarkerDemo IllegalStateException no incluye puntos
  • Intento de volver a abrir un objeto ya cerrado: java.lang.IllegalStateException :?
  • IllegalStateException cuando .replace el fragmento al reiniciar
  • java.lang.IllegalStateException: Llamar Ver métodos en otro subproceso que el subproceso de interfaz de usuario
  • Android.media.audiofx.Visualizer lanzando excepción cada otra vez
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.