wake-up-neo.com

Android - Schaltfläche "Zurück" simulieren

Wenn ich in meiner App eine Taste drücke, muss ich zur letzten Aktivität zurückkehren.

Irgendwelche Ideen?

65
david

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.

94
Chris Thompson

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.

66
黄雨伞

bei der Verwendung von Fragmenten:

getFragmentManager().popBackStack();

oder

getSupportFragmentManager().popBackStack();

wenn Sie das Paket Android.support.v4.app verwenden

36
zajac.m2

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);
    }
1
RenniePet