Cómo reanudar la actividad en lugar de reiniciar al ir "arriba" de la barra de acción
Tengo dos actividades. Diga Activity A
y Activity B
Desde la Activity A
Haga clic en un botón para iniciar Activity B
Este es el código que uso para esto:
Intent intent = new Intent(this, ActivityB.class); this.startActivity(intent);
Ahora, en este punto, estoy en la Activity B
En el método de creación on de la Activity B
, habilito el botón arriba.
- Barra de herramientas setNavigationOnClickListener breaks ActionbarDrawerToggle funcionalidad
- Hacer el dibujo del cajón de navegación detrás de la barra de estado
- Android: Regresar al fragmento anterior en la parte posterior de la prensa
- ¿Debo especificar el nombre de la actividad principal en el manifiesto de Android?
- Android Diseño de materiales Navegación Vista -> Elemento
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_news); getActionBar().setDisplayHomeAsUpEnabled(true); //Here// }
Y en el identificador de evento para el botón "arriba", tengo este código:
public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()) { case android.R.id.home: finish(); NavUtils.navigateUpFromSameTask(this); default: return super.onOptionsItemSelected(item); } }
Ahora decido volver a Activity A
Haga clic en el botón de arriba en la barra de acción que se ve así:
Ahora el problema es, cuando hago clic en el "botón de arriba", que se remonta a la Activity A
que está bien, pero se reinicia . ¿Cómo puede hacer que deje de reiniciar? Sólo quiero que se reanude .
Cuando uso mi botón de hardware atrás, funciona como se esperaba. Es decir, va a la Activity A
y lo reanuda en lugar de reiniciarlo.
Quiero que mi actividad se reanude porque en esa actividad, descargo una cadena en línea y por lo tanto no quiero que siga descargando los datos cuando un usuario pasa de Actividad B -> Actividad A
Editar Mi archivo de manifiesto para la sección de Activity B
tiene este aspecto:
<activity android:name="com.example.android.ActivityB" android:label="@string/title_activity_view_news" android:parentActivityName="com.example.android.ActivityA"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.android.ActivityA" /> </activity>
Edit 2 [Answer] Ok, así que esto fue bastante inesperado, pero en mi AndroidManifest.xml, en la sección de la actividad A, tuve que agregar el trazador de línea siguiente. android:launchMode="singleTop"
por lo que ahora se ve así:
<activity android:name="com.example.android.ActivityA" android:label="@string/app_name" android:launchMode="singleTop"> //**HERE**// <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
La explicación a esto se da aquí
- La actividad de NavigationDrawer está llena de fragmentos de retorno de llamada y lógica de aplicaciones
- Setting launchMode = "singleTask" contra la actividad de configuración launchMode = "singleTop"
- Bloquear / deshabilitar el botón de aplicaciones recientes
- Implemente el cajón deslizante con el visor donde se encuentra el cajón deslizante en el visor
- Android - Fragmentos del cajón de navegación
- NavigationDrawer con Actividades vs. NavigationDrawer con Fragments
- Propósito de navegación que funcionaría con mapas y waze
- Cómo cambiar el color de la barra de estado en android
Debería haber añadido como una respuesta en lugar de un comentario .. pero aquí vas para que puedas aceptar si quieres para que otros puedan ver si es necesario.
https://stackoverflow.com/a/16147110/3286163
Básicamente, para resumir el androide siempre se recreará la actividad a menos que se especifique que no con
android:launchMode="singleTop"
Nota: no funcionará si la actividad de retorno no está en la parte superior de la pila trasera como se menciona en la referencia.
Para cualquier persona, por favor upvote la respuesta en la url en vez de la mía si usted encuentra esto útil.
También puede lograr el mismo resultado programáticamente
Intent upIntent = NavUtils.getParentActivityIntent(this); upIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); NavUtils.navigateUpTo(this, upIntent);
- Android: cuando / por qué debo usar FrameLayout en lugar de Fragment?
- Ayuda con el paso de ArrayList y la actividad parcelable