Lorsque j'appuie sur un bouton de mon application, je dois revenir à la dernière activité.
Des idées?
L'appel de finish()
à partir de l'activité à laquelle vous souhaitez mettre fin devrait s'en occuper.
Modifier plusieurs années plus tard: Cela fonctionne toujours, mais c'est un peu une approche lourde. Lorsque j'ai initialement publié ceci, Fragments
n'existait pas, et (comme plusieurs commentateurs l'ont souligné) cela ne fonctionne pas tout à fait de la même manière lorsque Fragments
est impliqué. Il existe de meilleures approches maintenant si vous utilisez Fragments.
Pour mémoire: la méthode décrite ne fait pas la même chose que le bouton Précédent dans certains cas, mais vous pouvez appeler
this.onBackPressed();
ou
getActivity().onBackPressed();
si vous êtes dans un fragment pour obtenir exactement le même comportement.
lors de l'utilisation de fragments:
getFragmentManager().popBackStack();
ou
getSupportFragmentManager().popBackStack();
si vous utilisez le package Android.support.v4.app
Il s'agit d'une situation où le même fragment peut parfois être le seul fragment d'une activité, et parfois faire partie d'une activité multi-fragments, par exemple sur une tablette où deux fragments sont visibles en même temps.
/**
* 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();
}
}
Ce code peut être appelé pour implémenter un bouton Annuler, par exemple.
if (theButton.getId() == R.id.btnStatusCancel) {
StaticMethods.fragmentImplementCancel(this);
}