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 .
- GetSupportFragmentManager () causa java.lang.IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState
- IllegalStateException con PagerAdapter
- Excepción de estado ilegal al intentar cambiar un marcador en un Api de Google Maps v2 desde un mensaje de Google Cloud Messaging
- AudioTrack: play () llamado en AudioTrack no inicializado
- Java.lang.IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState
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.
- Java.lang.IllegalStateException: Fragmento no adjunto a la actividad
- Fragmento inflado en Fragmento El cuadro de diálogo arroja el error "Fragmento no creó una vista"
- Java.lang.IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState, FragmentTabHost
- En Facturación de aplicaciones - Orientación rápida de dispositivos - causa bloqueo (IllegalStateException)
- Añadir pestañas a la izquierda con FragmentPagerAdapter
- Haga clic en el elemento que conduce a IllegalStateException
- IllegalStateException en FragmentManager
- Android - SQLite Cursor getColumnIndex () es sensible a mayúsculas y minúsculas?
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.
- Cómo activar los datos móviles 3G de forma programática en Android?
- ¿Cómo matar una actividad en particular?