Voglio fare qualcosa di semplice sull'app Android. Come è possibile tornare a un'attività precedente.
Di quale codice ho bisogno per tornare all'attività precedente
Voglio fare qualcosa di semplice sull'app Android. Come è possibile tornare a un'attività precedente.
Di quale codice ho bisogno per tornare all'attività precedente
Risposte:
Le attività Android sono archiviate nello stack di attività. Tornare a un'attività precedente potrebbe significare due cose.
Hai aperto la nuova attività da un'altra attività con startActivityForResult . In tal caso, puoi semplicemente chiamare la funzione finishActivity () dal tuo codice e ti riporterà all'attività precedente.
Tieni traccia dello stack di attività. Ogni volta che inizi una nuova attività con un intento puoi specificare un flag di intento come FLAG_ACTIVITY_REORDER_TO_FRONT
o FLAG_ACTIVITY_PREVIOUS_IS_TOP
. Puoi usarlo per spostarti tra le attività della tua applicazione. Non li ho usati molto però. Dai un'occhiata alle bandiere qui: http://developer.android.com/reference/android/content/Intent.html
Come menzionato nei commenti, se l'attività viene aperta con startActivity()
allora si può chiuderla con finish()
. Se si desidera utilizzare il pulsante Su, è possibile catturarlo onOptionsSelected(MenuItem item)
con il metodo controllando l'ID articolo a android.R.id.home
differenza di R.id.home
quanto indicato nei commenti.
Prova Activity#finish()
. Questo è più o meno ciò che fa il pulsante Indietro per impostazione predefinita.
this.finish();
#
è un indicatore che finish()
è un metodo non-statico della classe Activity. Non è Java valido, ma aiuta a spiegare come si potrebbe usare il metodo.
.
, cioè:Activity.someStaticMethod()
Basta scrivere su click finish () . Ti porterà all'attività precedente.
Solo questo
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Questo ti porterà a un'attività precedente mantenendo il suo stack e cancellando tutte le attività dopo di esso dallo stack.
Ad esempio, se lo stack era A-> B-> C-> D e inizi B con questo flag, lo stack sarà A-> B
Vuoi prendere il controllo del comportamento del pulsante Indietro? È possibile ignorare il pulsante Indietro (per passare a un'attività specifica) tramite uno dei due metodi.
Per Android 1.6 e versioni precedenti:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
O se stai supportando solo Android 2.0 o versioni successive:
@Override
public void onBackPressed() {
// do something on back.
return;
}
Per maggiori dettagli: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
Basta chiamare questo metodo per terminare l'attività corrente o per tornare indietro su onBackPressed
finish();
O
onBackPressed();
se vuoi andare vuoi solo andare all'attività precedente usare
finish();
O
onBackPressed();
se vuoi passare alla seconda attività o al di sotto che usi quanto segue:
intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);
Aggiungi questo nel tuo metodo onCLick (), tornerà alla tua attività precedente
finire();
oppure puoi usarlo. Ha funzionato perfettamente per me
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Se hai configurato correttamente il file AndroidManifest.xml con parent attività, puoi utilizzare:
NavUtils.navigateUpFromSameTask(this);
Dove si trova l'attività di tuo figlio.
Prova questo è agire come devi premere il pulsante indietro
finish();
onBackPressed();
È possibile chiamare in modo esplicito onBackPressed
è il modo più semplice.
Consultare Torna all'attività precedente per i dettagli
Ho lo stesso problema e
finish(); OR super.onBackPressed();
ha funzionato bene per me, entrambi hanno funzionato allo stesso modo, ma senza fortuna return
Inizia la seconda attività usando l'intento (o usa startActivity
o startActivityForResult
secondo i tuoi requisiti). Ora quando l'utente preme il pulsante Indietro, l'attività corrente in alto verrà chiusa e verrà mostrata la precedente.
Ora diciamo che hai due attività, una per selezionare alcune impostazioni per l'utente, come lingua, paese ecc. E dopo averlo selezionato, l'utente fa clic sul pulsante Avanti per andare al modulo di accesso (ad esempio). Ora se l'accesso ha esito negativo, l'utente sarà sull'attività di accesso, e se l'accesso ha esito positivo?
Se l'accesso ha esito positivo, è necessario avviare un'altra attività. Significa che verrà avviata una terza attività e sono ancora in corso due attività. In questo caso, sarà buono da usare startActivityForResult
. Quando l'accesso ha esito positivo, inviare nuovamente i dati OK alla prima attività e chiudere l'attività di accesso. Ora, quando i dati vengono ricevuti, avvia la terza attività e chiudi la prima attività utilizzando finish.
@Override
public void onBackPressed() {
super.onBackPressed();
}
e se si desidera sul pulsante, fare clic su Indietro, quindi basta inserire
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Prova questo funziona sia sul pulsante indietro barra degli strumenti come pulsante Indietro hardware .
Esistono pochi casi per tornare alla tua attività precedente:
Caso 1: se vuoi riportare il risultato alla tua attività precedente, allora ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
Caso 2: Attività A -> FBHelperActivity ----> AttivitàA
ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivity(intent);
FBHelperActivity.java
after getting of result call finish();
By this way your second activity will finish and because
you did not call finish() in your first activity then
automatic first activity is in back ground, will visible.
Dopo di che hai due modi per tornare dall'attività corrente all'attività precedente:
Basta chiamare: finish()
sotto il pulsante listener dei clic, oppure Sovrascrivi il seguente metodo per tornare indietro usando il pulsante Indietro del sistema:
@Override
public void onBackPressed() {
super.onBackPressed();
}
Oltre a tutte le risposte menzionate, il loro è ancora un modo alternativo per farlo, diciamo che hai due classi, classe A e classe B.
Classe A hai effettuato alcune attività come la casella di controllo seleziona, stampato alcuni dati e intendi la classe B. Classe B, desideri passare più valori alla classe A e mantenere lo stato precedente della classe A, puoi utilizzare, prova questa alternativa metodo o scarica il codice sorgente per dimostrarlo
o
http://developer.android.com/reference/android/content/Intent.html
Prova questo nella prima attività
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
Nella tua seconda attività
@Override
public void onBackPressed() {
this.finish();
}