Android: mantén agregado previamente la intención adicional cuando vayas a la actividad de los padres

Actualmente estoy trabajando con Android y todavía tengo algunos problemas con la comprensión del ciclo de vida de la Activity .

Permítanme mostrarles mi problema con un ejemplo:

Mi aplicación contiene un Navigation Drawer que permite utilizar para cambiar entre diferentes Fragment . Un Fragmento (Fragmento A) es una lista con algunos elementos. Al hacer clic en un elemento se abre la actividad B que se puede describir como una vista de detalle del elemento. B recibe toda la información necesaria mediante un Intent, el modelo de item implementa Parcelable y se pone como un Extra al Intent . Un button de Actividad B abre la vista de mapa Actividad C.

A – (artículo) -> B -> C

Utilizando el botón Arriba de la barra de acción de C se bloquea la aplicación cuando el método B Actividad onCreate llama

 Item item = bundle.getParcelable("com.example.myapp.model.Item"); 

Por supuesto, porque la vista de detalle B obtiene toda la información necesaria que debe mostrarse desde A. ¿Cómo puedo resolver ese problema? Quiero ser capaz de almacenar el elemento de alguna manera al llamar a C y subir a B de nuevo. (Usar el botón de retroceso en C funciona bien)

Si ha implementado la navegación como se describe en Proporcionar navegación en el sitio de desarrolladores de Android, debería ser capaz de corregir el error simplemente cambiando el modo de inicio para la actividad B a "singleTop". . Establezca esto en el archivo manifest.xml de la aplicación, de la siguiente manera:

 <activity ... launchMode="singleTop" ... /> 

Lo que está sucediendo ahora, presumiblemente porque el modo de lanzamiento de B es estándar, es que la navegación ascendente está lanzando una nueva instancia de actividad B; No obtiene los extras que fueron proporcionados originalmente por A.

Cuando el modo de inicio es "singleTop" de acuerdo con el documento vinculado,

Si la actividad principal tiene el modo de inicio singleTop, o la intención ascendente contiene FLAG_ACTIVITY_CLEAR_TOP, la actividad principal se lleva a la parte superior de la pila y recibe la intención a través de su método onNewIntent ().

En onNewIntent (), creo (por favor, compruebe esto), que simplemente puede ignorar la nueva intención, porque desea continuar usando la intención de la actividad A.

Utilizaría una clase de aplicación para almacenar los datos globales de la siguiente manera: Uso de la clase Aplicación de Android para persistir los datos Esto sirve como un objeto singleton al que pueden referirse todas las actividades

  • Tener una instancia de actividad
  • ¿Por qué se debe llamar OnCreate sólo una vez al inicio de la Actividad?
  • ¿Android pasa información persistente en paquetes o usa un patrón singleton?
  • Flag Activity Clear Top destruye la actividad objetivo y que la crea
  • La actividad no llamó a terminar? (API 23)
  • Android onStop () no se llama al iniciar una nueva actividad en modo multi-ventana
  • Manteniendo los hilos y el estado de la conexión en la aplicación de Android usando onSaveInstanceState?
  • ANDROID: Estado de actividad después de pulsar el botón de retroceso
  • Android Lifecycle: ¿Se supone que onResume () se llamará durante el inicio?
  • ¿Qué es el ciclo de vida del adaptador RecyclerView?
  • onDestroy () se llama cuando se presiona el botón de retroceso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.