2011-06-16 13 views

Respuesta

4

aquí están los pasos que harán lo necesario:

  • de la actividad C iniciar la actividad A con un booleano fromActivityC empaquetado con la intención y el indicador FLAG_ACTIVITY_CLEAR_TOP establecido.
  • Ahora en la creación de la actividad A primero, compruebe este booleano "fromActivityC" y, si está presente, inicie la actividad D, de lo contrario, el flujo normal continuará.

    // following code can be used to get the boolean in the oncreate 
    boolean entrypoint=this.getIntent().getExtras().getBoolean("fromActivityC"); 
    

Una solución lil pero creo que sirve

+0

Gracias, truco interesante, funciona ... Pero al escribir en el teclado tuve una idea: cuando A llama a B, termina A; cuando B vuelve, recrea A; cuando C llama a D, crea D con FLAG_ACTIVITY_CLEAR_TOP. ¡Sí! – Michele

+0

sí que debería funcionar ...pero ¿no crees que volver a crear actividades como esta siempre tomará muchos ciclos de CPU y derrota el propósito de la pila de actividades ... algo sobre lo que reflexionar :) – Nitin

1

Un poco hacky, pero se puede empezar la actividad A, mientras que la limpieza de la pila, a continuación, iniciar la actividad D.

Actividad A podría aparecerá por un momento antes de desaparecer aunque

2

Hay varias manera de eliminar una actividad de la pila o evitar que se apile:

Para eliminar su actividad de la pila, simplemente llame al finish(), consulte here.

También puede implementar en su manifiesto la propiedad: android: noHistory = "true" que evita que una actividad se apile.

Ver esta forma de pregunta con más detalle: Removing an activity from the history stack

1

Usted podría tratar de terminar ActivityB al iniciar ActivityC y lo mismo en ActivityC la hora de lanzar A.

Su código se vería así:

Intent i = new Intent(this.class.ActivityC); 
startActivity(i); 
ActivityB.finish(); 
+0

No puedo, actividad C se un diálogo. Si termino B cuando comienzo C, veo A debajo de C. – Michele

0

de devolución de llamada de C, pasar un mensaje de vuelta a A y comenzar su D de ACALL acabado, esto va a terminar B y C (porque C es aparte de B).

0

que aquí hay una solución mejor que no depende de la evaluación del contenido Intent en A: usar la bandera FLAG_ACTIVITY_TASK_ON_HOME

también debe echar un vistazo a las otras banderas Android Intent

Cuestiones relacionadas