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)

2 Solutions collect form web for “Android: mantén agregado previamente la intención adicional cuando vayas a la actividad de los padres”

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

  • AsyncTask & runtime config change: ¿qué enfoques, con ejemplos de código conciso, respalda el equipo de Android?
  • Animación al inicio de la actividad salta
  • Manteniendo los hilos y el estado de la conexión en la aplicación de Android usando onSaveInstanceState?
  • Nexus 5 va a modo de espera hace ciclo de vida de actividad buggy
  • En Activity.onCreate (), ¿por qué Intent.getExtras () a veces devuelve null?
  • Tener una instancia de actividad
  • ¿Android pasa información persistente en paquetes o usa un patrón singleton?
  • ¿Cómo se "restaurará" la actividad del androide después de que se haya matado su proceso?
  • ¿Por qué se debe llamar OnCreate sólo una vez al inicio de la Actividad?
  • Cómo iniciar una nueva actividad al hacer clic en el botón
  • Aplicación eliminada mientras se realiza onPause (). ¿Algún consejo sobre cómo manejar tal caso?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.