¿Cómo se manejan las transacciones de fragmentos cuando el estado de la actividad principal está destinado a ser guardado?

Mi aplicación tiene varios fragmentos y actividades. A lo largo del ciclo de vida de la actividad de la principal de los padres, la aplicación presenta información / opciones al usuario en otras actividades.

La documentación de Fragmentos tiene la siguiente estipulación para commit ():

Precaución: puede validar una transacción utilizando commit () sólo antes de que la actividad guarde su estado (cuando el usuario abandona la actividad). Si intenta cometer después de ese punto, se lanzará una excepción. Esto se debe a que el estado después del commit se puede perder si la actividad necesita ser restaurada. Para situaciones en las que está bien que pierda el commit, use commitAllowingStateLoss ().

El problema es que después de regresar a la actividad principal, ya no puedo usar FragmentTransactions que son parte integral de la forma en que he diseñado la navegación en la aplicación.

Una solución que he pensado es cambiar mis actividades a los fragmentos, sin embargo, mi aplicación también utilizará en la aplicación de facturación que creo que siempre iniciará su propia actividad. Esto parece una restricción enorme – en algún momento en el desarrollo voy a terminar teniendo que mostrar una actividad aparte.

Probablemente podría salir con el uso de commitAllowingStateLoss (), pero me siento como si me falta un concepto importante en Android tablet desarrollo de aplicaciones. ¿Hay una manera de comenzar las actividades entonces vuelve a la actividad del padre (que maneja fragmentos) sin perder la capacidad de cometer FragmentTransactions?

Puede volver a realizar transacciones de fragmentos una vez que se haya reiniciado / iniciado su actividad principal, incluso si se ha detenido previamente. Los documentos sólo significan que no se puede confirmar durante el período de tiempo en el que se ha detenido la actividad (y se ha guardado el estado) y antes de que se reanude. Si regresa a su actividad principal después de visitar otra actividad, puede utilizar las transacciones de fragmentos de nuevo después de que se haya llamado Activity.onStart() .

La razón de esta restricción es que Android guarda el estado de los fragmentos asociados con una actividad durante Activity.onSaveInstanceState() . Si intentas hacer transacciones de fragmentos después de este punto, entonces estarás expuesto a la pérdida de estado si Android necesita volver a crear esa actividad (ya que la información que utiliza para recrear el estado de Actividad fue sólo los datos que se capturaron en Activity.onSaveInstanceState() ).

  • ¿Qué hace exactamente FragmentManager y FragmentTransaction exactamente?
  • Fragmento de Android La transacción con animación provoca que el flash blanco
  • ¿Cómo reemplazar el fragmento C con el fragmento A cuando se pulsa el botón Atrás?
  • Mover fragmento de Android a un contenedor diferente No se puede cambiar el identificador de contenedor de fragmento
  • El artículo de DrawerLayout hace clic - ¿Cuándo es el momento adecuado para reemplazar el fragmento?
  • Congelación de la interfaz de usuario cuando la transacción de fragmentos
  • No se encontró ninguna vista para id - DialogFragment + Fragment
  • Android TextInputLayouts perder texto / contenido al volver en la transacción de fragmentos
  • Cómo reemplazar un ViewPager con un fragmento
  • La biblioteca de la barra de acciones de AppCompat no muestra fragmentos añadidos
  • Fragmento Transacción cargar la vista vacía, pero el fragmento se muestra después de que el dispositivo giratorio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.