remove popbackstackimmediate from fragments example backstack addtobackstack android android-activity stack back

popbackstackimmediate - remove fragment android



Cómo controlar Android back stack (4)

Supongamos que está utilizando el Intento para pasar a otra actividad

Intent i = new Intent(A.this,B.class); startActivity(i);

este código lo llevará a la Actividad ''B'' y cuando presione el botón Atrás lo llevará de nuevo a la Actividad ''A''. Si no quiere volver a la actividad ''A'', puede usar ...

Intent i = new Intent(A.this,B.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(i);

Para obtener más información acerca de Back Stack en Android, siga este enlace: http://developer.android.com/guide/components/tasks-and-back-stack.html

Digamos que tengo

A-> B-> C-> D-> E

En la parte posterior de la pila de Android. Quiero poder volver a uno de los siguientes:

A->B->C A->B A

¿Cómo puedo conseguir esto? Con suerte sin forzar clics de botón hacia atrás.


Usando la imagen y la información de la página oficial de desarrolladores en las tareas de Android y en la pila trasera , puede ver que de todas las otras formas de lanzar una actividad, puede garantizar dicho comportamiento solo usando FLAG_ACTIVITY_CLEAR_TOP en sus indicadores de intención.

Su botón de regreso regular procede como sigue:

Pero cuando especificas este indicador, obtienes un comportamiento como el que necesitas, como se muestra en un ejemplo en esta fuente :

considere una tarea que consista en las actividades: A, B, C, D. Si D llama a startActivity () con un Intent que resuelve el componente de la actividad B, entonces C y D estarán terminados y B recibirá el Intento dado, lo que resultará en la pila ahora es: A, B.


En realidad, para ir "arriba" a la actividad que elijas, debes usar la navegación "arriba" como se usa en la barra de acciones:

/** used to handle the "up" button on the action bar, to go to the defined top activity as written on the manifest */ public static void goUpToTopActivity(final Activity currentActivity) { final Intent intent = NavUtils.getParentActivityIntent(currentActivity); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); NavUtils.navigateUpTo(currentActivity, intent); }

para usarlo, debe establecer en el manifiesto a qué actividad debe usar esta función (o puede, por supuesto, configurarlo usted mismo cambiando el código):

si usa actionBarSherlock, para cada actividad que desee que suba, use:

<meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.your_app.activities.MainActivity" />

si usa el marco de android (si su versión minSdk es API 16 y superior), use el atributo " parentActivityName ".


Use el indicador FLAG_ACTIVITY_CLEAR_TOP .

Intent a = new Intent(this, A.class); a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(a);