Apps für Android programmieren leicht gemacht!
Nutze den Back Button unter Android richtig.

Back Button

Ein unverzichtbares Mittel in der Programmierung einer etwas „komplexeren“ App ist die richtige Nutzung des Back Button. Dieser wird auch Zurückknopf genannt.
Gemeint ist damit der kleine Pfeil am unteren Bildschirmrand, mit dem man in einer App einen Schritt zurück gehen kann.

Genau das wollten wir hier nun einmal beispielhaft beschreiben.
Dabei gehen wir als Beispiel davon aus, dass wir eine App mit 2 verschiedenen Fenster haben.

  • Das Hauptfenster – Wird zu Beginn der App aufgerufen.
  • Ein Unterfenster – Wird vom Hauptfenster aus geöffnet und beinhaltet z.B. Einstellungen

Nun möchten wir es gerne realisieren, dass wir beim Klick auf den Back Button (Zurückknopf) vom Unterfenster aus wieder das Hauptfenster angezeigt bekommen.
Normalerweise würde sich die App ohne zusätzliche Programmierung des Back Button schließen, wenn man diesen klickt.

Bevor wir uns nun mit dem Back Button beschäftigen können müssen wir das Grundgerüst unserer App aufbauen.
Dieses Grundgerüst sieht in unserer Beispiele wie folgt aus:

public class Beispielapp extends Activity {

    private int momentanesFenster = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hauptfenster);
        momentanesFenster = 0;
    }

    public void openUnterfenster(View v){
        setContentView(R.layout.activity_unterfenster);
        momentanesFenster = 1;
    }
}

Zur Erläuterung:
Die Funktion „openUnterfenster()“ wird beim Klick auf einen Button im Hauptfenster ausgeführt und ändert das Layout (Aussehen) in das der Unterseite.
Die Variable „momentanesFenster“ beschreibt den momentanen Aufenthaltsort des Nutzers. 0 bedeutet das Hauptfenster, 1 bedeutet das Unterfenster.

 

Nun können wir uns daran machen, das Verhalten des Back Button zu bestimmen.

Unser Grundcode für den Back Button lautet wie folgt:

@Override
public void onBackPressed() {
    // Standardaktion (App schließen)
    super.onBackPressed();
}

Mit Hilfe dieses kurzen Codes können wir in das Verhalten der App beim Klick auf den Back Button eingreifen. Bisher verändert dieser Code das Verhalten der App allerdings noch nicht.

 

Im nächsten Schritt können wir nun über die Variable „momentanesFenster“ prüfen in welchem Fenster der Nutzer sich gerade befindet. 0 bedeutet das Hauptfenster, 1 bedeutet das Unterfenster.
Das heißt, wenn der Nutzer sich im Hauptfenster (momentanesFenster = 0) befindet, dann soll sich die App ganz normal schließen.
Befindet sich der Nutzer im Unterfenster (momentanesfenster = 1), dann möchten wir gerne auf das Hauptfenster zurückkehren.
Dies prüfen wir mit einer einfachen if-Abfrage.

@Override
public void onBackPressed() {

    if(momentanesFenster == 1){
        //Der Nutzer befindet sich gerade im Unterfenster, da momentanesFenster = 1.
        
        //Nun öffnen wir wieder das Layout des Hauptfensters.
        setContentView(R.layout.activity_hauptfenster);
        
        //anschließend ändern wir die Variable momentanesFenster wieder auf 0, da dies das Hauptfenster beschreibt.
        momentanesFenster = 0;
        
        //Mit diesem Befehl verhindern wir die weitere Ausführung der Funktion und damit überspringen wir alle weiteren Befehle. 
        return;
    }

    // Standardaktion (App schließen)
    super.onBackPressed();
}

Natürlich könnte man theoretisch unendlich viele weitere if-Abfragen einprogrammieren, um unendlich viele weitere Fenster zurück gehen zu können.

 

Achtung: Es gibt noch weit aus elegantere Lösungen, aber diese ist vor allem für Anfänger eine der einfachsten Lösungen.

Back Button


Der Sourcode dieser Beispielapp zeigt einfach auf, wie man den Back Button von Android besser nutzen kann, um den App Flow zu verbessern. Die App kann in Android Studio compiliert und auf dem eigenen Handy installiert werden.

DownloadLizenzbedingungen

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

6 Kommentare

*Pflichtfeld

    • Hallo Wolfgang,
      auch bei dieser Zip lässt sich am Mac einwandfrei öffnen.
      Ich werde diese Problematik mal genauer untersuchen und gegebenenfalls alle Zip-Dateien noch einmal neu hochladen.

      Ich danke Ihnen, für den Hinweis.

      Gruß,
      Marvin

      [EDIT:] Das Problem ist nun gelöst. Ich bedanke mich noch einmal recht herzlich!

    • Dies hier habe ich gefunden, läuft aber nur auf Marshmallow wenn man es als Android Manifest.xml absichert und als apk packt.

      versionCodeversionName
      minSdkVersion
      targetSdkVersionname
      allowBackup
      iconlabel
      theme
      permissionresourceandroid*http://schemas.android.com/apk/res/android
      package
      platformBuildVersion
      CodeplatformBuildVersionNamemanifest
      com.elesbb.holdbacktokill
      1.021
      5.0.1-1624448
      uses-sdk
      uses-permission
      android.permission.VIBRATE
      applicationservice“com.elesbb.holdbacktokill.Comander-android.permission.BIND_ACCESSIBILITY_SERVICE
      intent-filter
      action1
      android.accessibilityservice.AccessibilityService
      meta-data
      android.accessibilityserviceactivity
      com.elesbb.holdbacktokill.MainActivity
      android.intent.action.MAINcategory
      android.intent.category.LAUNCHER

      • Hallo Wolf, ich glaube da ist etwas mit der Formatierung schief gelaufen.
        Siehe einfach meine anderen Kommentar, für die entsprechende Funktion.

        Gruß

  • Hallo, ich suche eine Funktion unter Nougat die auch heißt „Press back2Kill App“
    Wie kann ich nun bewerkstelligen, das beim gedrückt halten der back Taste die geöffnete App geschlossen wird? Leider gibt es ja kein xposed Framework für Nougat und da ich das Problem mit jedem neuen Android er erneut habe würde ich mich über eine Antwort freuen.
    Vielen Dank

    • Hallo Wolf,

      wenn du deine App über ein gedrückt halten der Zurück-Taste beenden willst, dann geht das über:

      @Override
      public boolean onKeyLongPress(int keyCode, KeyEvent event) {
      if (keyCode == KeyEvent.KEYCODE_BACK)
      {
      finish();
      return true;
      }
      return super.onKeyLongPress(keyCode, event);
      }

      Gruß