2013-03-15 16 views
6

Ho due attività, MainActivity e NextActivity. Da MainActivity posso andare a NextActivity e quindi utilizzare Intent per tornare a MainActivity. Ma poi OnCreate e altre cose verranno chiamate e sarà come se tutto fosse nuovamente inizializzato. Voglio tornare nello stato proprio come lo era prima di entrare nello NextActivity.Android torna alla precedente attività

Mi sono reso conto che se si utilizza il pulsante di back fisico sul mio telefono esattamente questo è raggiunto.

Quindi, come tornare a un'attività come il pulsante Indietro?

PS. Ho provato finish() ma non ho aiutato.

+3

hai davvero testato il traguardo? Come? questo è il modo in cui la finitura – lelloman

+2

() è la strada da percorrere. Cosa significa che non ha aiutato? Forse stai esaurendo la memoria e Android deve ricostruire la tua attività? – Zielony

+0

Non credo ci sia alcuna garanzia che la tua attività precedente sia ancora disponibile. È meglio salvare lo stato utilizzando le preferenze o una sorta di memoria nel caso in cui l'attività sia stata raccolta. – Davos555

risposta

25

si può chiamare onBackPressed() invece di utilizzo Intent tornare a MainActivity ..

Ad esempio:

public void onClick() { 
    onBackPressed(); 
} 

Nota: finish() dovrebbe fare esattamente quello che vuoi ..

+0

è la risposta @Jonas –

4

Assumere hai due attività A e B. Passi da A a B. A passa allo sfondo.

B viene inserito nello stack posteriore e B prende fuoco. Quando fai clic sul pulsante indietro, l'attività B viene visualizzata al di fuori dello stack posteriore. L'attività A viene ripresa.

Nota: è possibile tenere contemporaneamente più attività in background contemporaneamente. Tuttavia, se l'utente esegue contemporaneamente numerose attività in background, il sistema potrebbe iniziare a distruggere le attività in background per recuperare la memoria, causando la perdita degli stati di attività. Vedere la sezione seguente sullo stato di attività.

http://developer.android.com/training/basics/activity-lifecycle/starting.html. L'attività una volta distrutta deve essere ricreata. L'attività viene disattivata e ricreata quando l'orientamento dello schermo cambia.

http://developer.android.com/training/basics/activity-lifecycle/starting.html.

http://developer.android.com/guide/components/tasks-and-back-stack.html. Dovresti dare un'occhiata a come funziona lo stack posteriore.

Nel tuo caso la finitura dovrebbe funzionare per te (premendo il pulsante Indietro).

Nota: il sistema chiama suDestroy() dopo che ha già chiamato onPause() e onStop() in tutte le situazioni tranne uno: quando si chiama finish() dal metodo onCreate().

Supponiamo di avere una terza attività C e di voler andare all'Attività A.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK) { 
    onBackPressed(); 

} 

return super.onKeyDown(keyCode, event); 
} 

public void onBackPressed() { 
Intent myIntent = new Intent(ActivityC.this, MainActivity.class); 
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear back stack 
startActivity(myIntent); 
finish(); 
return; 
} 
Problemi correlati