studio programacion para herramientas fundamentos desarrollo con avanzado aplicaciones android android-actionbar android-navigation

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

Editar Mi archivo de manifiesto para la sección de la 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>

La explicación a esto se da aquí


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);