programacion - manual android studio avanzado
Cómo reanudar la actividad en lugar de reiniciar cuando va "arriba" desde la barra de acciones (2)
Debería haber agregado como respuesta en lugar de un comentario ... pero aquí va para que pueda aceptarlo si lo desea para que otros puedan verlo si es necesario.
https://stackoverflow.com/a/16147110/3286163
Básicamente, para resumir el android siempre recrearás la actividad a menos que lo especifiques no con
android:launchMode="singleTop"
Nota: no funcionará si la actividad de retorno no está en la parte superior de la pila posterior como se menciona en la referencia.
Para cualquier otra persona, por favor vote la respuesta en la url en lugar de la mía si lo encuentra útil.
Tengo dos actividades. Diga la Activity A
y la Activity B
De la Activity A
hago clic en un botón para iniciar la 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 on create de la Activity B
, habilito el botón up.
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 la Activity A
Hago clic en el botón de la barra de acciones que se ve así:
Ahora el problema es que cuando hago clic en el botón "subir", vuelve a la Activity A
que está bien, pero se reinicia . ¿Cómo puede hacer que deje de reiniciarse? Solo quiero que se reanude .
Cuando uso mi botón de retroceso de hardware, funciona como se esperaba. es decir, va a la Activity A
y la reanuda en lugar de reiniciarla.
Quiero que mi actividad se reanude porque, en esa actividad, descargo una cadena en línea y no quiero que vuelva a descargar los datos cuando un usuario pasa de la Actividad B -> Actividad A
Activity B
se ve así: <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, esto fue bastante inesperado, pero en mi AndroidManifest.xml, en la sección Activity A, tuve que agregar el siguiente line line. 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>
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);