2010-01-22 8 views
47

Necesito reemplazar la actividad actual por una nueva. Es decir, quiero comenzar una nueva actividad y eliminar la actividad actual de la pila de tareas.Reemplazar la actividad actual

De acuerdo con la documentación, parece que la mejor manera sería comenzar la actividad usando Activity.startActivity como de costumbre, y luego llamar al Activity.finish inmediatamente para cerrar la actividad actual.

¿Es este un uso válido de estas API o debería estar haciendo otra cosa?

Respuesta

50

Sí. Está bien usar api de esta manera.

+3

¿Esto funciona con startActivityForResult? Si es así, ¿dónde se publica el resultado? – nmr

+1

Para las personas que se preguntan sobre la pregunta de @rmn, lo que he estado haciendo es comenzar la nueva actividad para el resultado, y luego llamar a finish() en el resultado de actividad como sea necesario. –

5

intentar usar FLAG_ACTIVITY_TASK_ON_HOME, FLAG_ACTIVITY_NEW_TASK en las banderas intención

24

La manera adecuada de lograr esto es usar la siguiente:

Intent intent = new Intent(this,MyActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME); 
startActivity(intent); 
this.finish(); 

El código asume que está en una actividad, de lo contrario si está utilizando fragmentos use getActivity()

De esta forma, la actividad se inicia, establece correctamente su jerarquía para su botón Atrás, y también destruye los apropia comimos actividad

2

Puede añadir androide: launchMode = "SingleInstance" en su actividad, entonces anular onNewIntent método para actualizar la fecha

Referencia PlayerActivity in ExoPlayer Demo

+0

esto es realmente útil si tienes una página "Inicio" lógica/funcional y usas mucha navegación (como un cajón de navegación) –

Cuestiones relacionadas