Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


IllegalStateException – Biblioteca de soporte de fragmentos

Tengo un problema serio con mi aplicación continuamente estrellándose en algunos dispositivos de los usuarios con la excepción siguiente en un método del onStart de la actividad:

Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1299) at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1310) at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:541) at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:525) at android.support.v4.app.DialogFragment.show(DialogFragment.java:123) 

No puedo reproducir este error localmente en mi emulador. He encontrado algunas preguntas sobre este problema en stackoverflow: aquí y aquí

  • Android: Deshabilitar resaltado en GridView
  • El emulador de Android no gira al paisaje
  • Android: Deshabilitar el teclado virtual en todos los EditTexts
  • Cómo mostrar un spinner de progreso en android, cuando doInBackground () se está ejecutando
  • La aplicación se bloquea al iniciar Debido a java.lang.IllegalArgumentException: la columna '_id' no existe
  • Bandera de notificaciones push de Android que no aparece en algunos dispositivos
  • He probado la solución sugerida, es decir, no permiten los paquetes vacíos en onSaveInstance ni en fragmentos ni actividades.

    Sin embargo, el problema persiste. Este es el único informe de Crash que recibo, y lo obtengo continuamente.

    ¿Alguien tiene una solución de trabajo?

  • Los widgets configurados con android: configure recibirán onUpdate aunque la configuración no esté terminada
  • ¿Cómo leer los mensajes de USSD en android?
  • ¿Debe usar los cargadores para acceder a servicios web?
  • MediaCodec getInputImage devuelve null en algunos dispositivos
  • La detección de etiquetas NFC no llama aNewIntent y está iniciando desde la actividad principal
  • No se puede acceder a la API WEB con ip: puerto pero puede con localhost: puerto durante el modo de depuración VS
  • 3 Solutions collect form web for “IllegalStateException – Biblioteca de soporte de fragmentos”

    He resuelto este problema por

    Compruebe mi respuesta aquí para el código: "No se puede realizar esta acción después de onSaveInstanceState" – ¿por qué estoy recibiendo esta excepción del método onResume de mi actividad?

    No tengo más IllegalStateException hasta ahora.

    He resuelto esto con esta solución , es decir, poner el código en una función métodos onPostResume() en la actividad

    Lea este artículo.

    Y,

    Éste.

    Una vez que el problema se entiende, seguir adelante y cambiar las cosas correctamente:

    Descubra por qué sus transacciones están ocurriendo fuera de su estado onResume. ¿Por qué suceden estas cosas cuando no deberían serlo? ¿Por qué está agregando y eliminando fragmentos manualmente con respecto al ciclo de vida de la aplicación en lugar de cuando el usuario solicita. Usted debe tal vez necesita una vez en el onCreate () o cuando el usuario invoca algo. ¿Pero por qué estás jugando con ellos en onResume () en primer lugar? No lo hagas.

    Si cambia todos los .commit() a .commitAllowStateLoss() entonces los bloqueos desaparecerán. Pero, es mejor que no lo hagas. Es mejor asegurarse de que nunca cambia sus fragmentos, excepto cuando la aplicación está completamente en vivo. A veces eso significa que nunca se carga un fragmento de OnActivityResult () sino que se marca para ejecutarse en onPostResume (), y se evita la realización de cambios de interfaz de usuario en subprocesos asincrónicos que asumen erróneamente que no se pudo haber matado la actividad mientras tanto.

    Si sólo quieres spackle todo, .commitAllowStateLoss() lo hará. Si quieres hacerlo bien, asegúrate de no tocar tus fragmentos después de que las cosas mueran.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.