2012-07-03 19 views
44

Actualmente estoy comenzando un nuevo Activity y llamando al finish en uno actual.¿Iniciar nueva actividad y finalizar la actual en Android?

¿Hay algún indicador que se pueda pasar a Intent que habilite la corriente de acabado Activity sin necesidad de llamar al finish manualmente desde el código?

+4

'acabado()' no le puede ayudar? –

Respuesta

102

Puede utilizar finish() método o puede utilizar:

android:noHistory="true" 

Y entonces no hay necesidad de llamar a finish() más.

<activity android:name=".ClassName" android:noHistory="true" ... /> 
+5

¿estás seguro de que esto hace lo que dices? de los documentos de Android: FLAG_ACTIVITY_NO_HISTORY Si se establece, la nueva actividad no se guarda en la pila del historial. Tan pronto como el usuario navega fuera de ella, la actividad finaliza. Esto también se puede establecer con el atributo noHistory. – 10s

+14

android: noHistory = "true" NO es lo mismo que finish()! –

+1

Simplemente use el acabado(), no use noHistory –

4

FLAG_ACTIVITY_NO_HISTORY cuando se inicia la actividad que desea terminar después de que el usuario pasa a otra.

http://developer.android.com/reference/android/content/Intent.html#FLAG%5FACTIVITY%5FNO%5FHISTORY

+1

FLAG_ACTIVITY_NO_HISTORY hace lo contrario. La nueva actividad no se guarda en el historial, mientras que quiero que se complete la actividad anterior. – pixel

+2

Sí, eso es lo que dije. Actividad A que desea terminar, Actividad B a la que se accede desde la actividad A. Comience la actividad A con la bandera que menciono, de modo que cuando el usuario pase de la actividad a a la actividad B, la actividad A finalice. Como mencioné en la respuesta: "... al comenzar la actividad que deseas terminar ...". Es la misma respuesta que la confirmada. – 10s

52

Uso finish así:

Intent i = new Intent(Main_Menu.this, NextActivity.class); 
finish(); //Kill the activity from which you will go to next activity 
startActivity(i); 

FLAG_ACTIVITY_NO_HISTORY hace lo contrario. La nueva actividad no se guarda en la historia, mientras que OP quiere que se complete la actividad anterior.

Para obtener más información sobre el uso de Intent.FLAG_ACTIVITY_NO_HISTORY lectura: http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_HISTORY

+3

FLAG_ACTIVITY_NO_HISTORY hace lo contrario. La nueva actividad no se guarda en el historial, mientras que quiero que se complete la actividad anterior. – pixel

+8

does not finish() '¿Supone matar la actividad actual? ¿cómo espera que llegue a la siguiente línea 'startActivity (i)'? Me parece peligroso e inesperado – Michael

+3

@Michael Las llamadas son async startActivity() recibirán una llamada. – tomi

Cuestiones relacionadas