Quando si preme un pulsante nella mia app, ho bisogno di tornare all'ultima attività.Android - Simula pulsante Indietro
Qualche idea?
Quando si preme un pulsante nella mia app, ho bisogno di tornare all'ultima attività.Android - Simula pulsante Indietro
Qualche idea?
Chiamare finish()
dall'attività che si desidera terminare dovrebbe occuparsi di questo.
Modifica molti anni più tardi: Questo funziona ancora, ma è un approccio un po 'pesante. Quando ho pubblicato questo messaggio originariamente, Fragments
non esisteva e (come hanno sottolineato diversi commentatori) questo non funziona nello stesso modo quando ci sono Fragments
coinvolti. Ci sono approcci meglio ora se si sta utilizzando Fragments.
quando si utilizza frammenti:
getFragmentManager().popBackStack();
o
getSupportFragmentManager().popBackStack();
se si utilizza android.support.v4.app pacchetto
Questo è per una situazione in cui lo stesso frammento può talvolta essere l'unico frammento in un'attività e talvolta parte di un'attività multi-frammento, ad esempio su un tablet in cui due i frammenti sono visibili allo stesso tempo.
/**
* Method that can be used by a fragment that has been started by MainFragment to terminate
* itself. There is some controversy as to whether a fragment should remove itself from the back
* stack, or if that is a violation of the Android design specs for fragments. See here:
* http://stackoverflow.com/questions/5901298/how-to-get-a-fragment-to-remove-itself-i-e-its-equivalent-of-finish
*/
public static void fragmentImplementCancel(Fragment fragment) {
FragmentActivity fragmentActivity = fragment.getActivity();
FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager();
if (fragmentManager.getBackStackEntryCount() == 1) {
fragmentManager.popBackStack();
}
else {
fragmentActivity.finish();
}
}
Questo codice può essere chiamato per implementare un pulsante Annulla, ad esempio.
if (theButton.getId() == R.id.btnStatusCancel) {
StaticMethods.fragmentImplementCancel(this);
}
Proprio per la registrazione: Il metodo descritto non fa lo stesso del pulsante indietro fa, in alcuni casi, ma è possibile chiamare
this.onBackPressed();
o
getActivity().onBackPressed();
se sono in un frammento per raggiungere esattamente lo stesso comportamento.
Da quello che posso dire, questa è la migliore risposta. Grazie. –
È possibile falsificare una chiamata tasto sul pulsante indietro:
@Override
public void onBackPressed() {
onNavigateUp();
}
questo è rigth, così facile, mi dispiace .... – david
Non c'è bisogno di chiedere scusa, solo felice di aiutare! –
Questo non simula il pulsante Indietro. Se si stanno solo utilizzando le attività, è ok ma se si stanno usando frammenti in un'attività, questo chiuderà tutti i frammenti con l'attività insieme. – tasomaniac