Wenn ich in meiner App eine Taste drücke, muss ich zur letzten Aktivität zurückkehren.
Irgendwelche Ideen?
Das Aufrufen von finish()
aus der Aktivität, die Sie beenden möchten, sollte dies erledigen.
Bearbeitung viele Jahre später: Das funktioniert immer noch, ist aber ein bisschen umständlich. Als ich das ursprünglich gepostet habe, existierte Fragments
nicht und (wie mehrere Kommentatoren darauf hingewiesen haben) funktioniert dies nicht ganz so, wenn es sich um Fragments
handelt. Es gibt jetzt bessere Ansätze, wenn Sie Fragments.
Verwenden.
Nur zum Aufzeichnen: Die beschriebene Methode funktioniert in einigen Fällen nicht wie die Zurück-Taste, aber Sie können anrufen
this.onBackPressed();
oder
getActivity().onBackPressed();
wenn Sie in einem Fragment sind, um genau das gleiche Verhalten zu erreichen.
bei der Verwendung von Fragmenten:
getFragmentManager().popBackStack();
oder
getSupportFragmentManager().popBackStack();
wenn Sie das Paket Android.support.v4.app verwenden
Dies gilt für eine Situation, in der dasselbe Fragment manchmal das einzige Fragment in einer Aktivität ist und manchmal Teil einer Aktivität mit mehreren Fragmenten, z. B. auf einer Tablette, bei der zwei Fragmente gleichzeitig sichtbar sind.
/**
* 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();
}
}
Dieser Code kann zum Beispiel aufgerufen werden, um eine Abbrechen-Schaltfläche zu implementieren.
if (theButton.getId() == R.id.btnStatusCancel) {
StaticMethods.fragmentImplementCancel(this);
}