2012-09-13 12 views
14

Ho un'app con 3 attività.Riprendi attività in Android

Ho l'attività principale. Ciò chiama la seconda attività, che quindi chiama la terza attività. Voglio tornare all'attività principale senza entrare in onCreate.

Questo è il codice per la terza attività:

startActivity(new Intent(TerceraActiviry.this, Main.class)); 
+0

uso launchMode singleTop – njzk2

+0

singleTop sarà solo ri- usa la stessa istanza se un'istanza è già in cima allo stack di attività, che in questo caso non sarà – kingraam

risposta

39

Se il Activity è ancora in esecuzione, questo codice porterà in primo piano senza entrare onCreate

Intent openMainActivity= new Intent(TerceraActiviry.this, Main.class)); 
openMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivityIfNeeded(openMainActivity, 0); 
+1

Grazie. Cerco questa soluzione per molte ore. E tu hai risolto in un minuto. –

+0

Penso che ci sia 1 extra ")" in prima linea. –

1

È startSubActivity invece di startActivity.

consultare lo sviluppatore Android per ulteriori informazioni here.

+0

Non sono d'accordo - questo creerà comunque una nuova istanza dell'attività – kingraam

+0

se si utilizza startActivityForResult per avviare la seconda e terza attività, è possibile tornare alla prima azione vity impostando RESULT_OK e chiamando il metodo finish() (rispettivamente). Lì passando il controllo all'attività principale già esistente. – Gan

+0

Punto giusto: nel contesto della domanda sembrava che stavi suggerendo di sostituire startActivity con startActivityForResult, che non avrebbe aiutato – kingraam

2

al fine di tornare al precedente attività devi finire quello visibile, utilizzare questo:

finish(); 

Se l'attività è stata avviata per un risultato, si dovrebbe dare un risultato, allora, in questo modo:

Intent intent = new Intent(); 
intent.putExtra(KEY_RESPONSE, responseData); 
setResult(RESULT_OK, intent); 
finish(); 

E si dovrebbe prendere il risultato sul chiamante attività utilizzando:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    switch (requestCode) { 
    // Test for the code you have used to start the Activity 
    } 
} 

Speranza che aiuta , Saluti

0

Il flag della modalità di avvio desiderato è clearTop. Questo tornerà all'istanza precedente dell'attività principale e cancellerà la seconda e la terza attività dalla pila di attività. Ad esempio, per fare questo dal codice:

Intent intent = new Intent(TerceraActiviry.this, Main.class)); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

questo chiamerà onCreate per l'attività principale – Gabriel