Ich habe zwei Fragmente Frag A und Frag B, die mit dem View Pager gerendert werden. Wenn der Benutzer von A nach B gezogen hat und dann die Zurück-Taste drückt (wenn in B), dann sollte der Benutzer zu A gehen, anstatt den Pager zu verlassen. Wie können wir das erreichen?
Das Hinzufügen einer Transaktion zum Backstack scheint nicht zu helfen.
Danke
Sie müssen die Methode onKeyDown()
in Activity
überschreiben.
Dadurch wird das Ereignis "Zurück" erfasst und der Benutzer zum ersten Element im ViewPager gesendet.
Es gibt auch ViewPager # getCurrentItem () die verwendet werden können, um nur zurückzugehen, wenn der Benutzer geklaut hat. Eine Implementierung wie folgt:
%Vor%würde den Benutzer nur dann zur vorherigen Seite zurücksenden, wenn sich der Benutzer auf der nächsten Seite befand. Anderenfalls wird das "Zurück" normal registriert und der Benutzer wird wie erwartet verlassen.
Sie möchten vielleicht den Fall, in dem der Benutzer zur vorherigen Seite zurückkehrt (vorausgesetzt, Sie haben mehr als zwei Seiten). In diesem Fall möchten Sie den ViewPager.OnPageChangeListener () implementieren und speichern Sie die Position jedes Mal, wenn onPageSelected(int position)
aufgerufen wird. Wenn Sie sie in einem Stapel implementieren, können Sie sie bei jedem Drücken des "Zurück" -Buttons wieder entfernen. Sobald der Stapel leer ist, beenden Sie die App.
BEARBEITEN
Wie in den Kommentaren von Jade Byfield richtig gesagt, wäre es etwas einfacher, onBackPressed()
in der Aktivität zu verwenden. Dies funktioniert nur in API-Level 5 +.
Ich denke, ein besserer Ansatz bestünde darin, die Rückschlüsselbehandlung an die entsprechenden Fragmente zu delegieren. Ich habe ein CustomFragment verwendet, das eine Methode zur Verarbeitung des Zurück-Schlüssels unterstützt. Alle Fragmente werden von diesem CustomFragment aus erweitert.
%Vor%Die Aktivität kann die backKey-Verarbeitung an das aktuelle Fragment delegieren. Fragmente können erforderliche Aktionen in ihrer jeweiligen Implementierung der handleBackKey-Methode ausführen. Die Methode kann True zurückgeben, um Aktivität zu sagen, den Back-Key nicht zu verarbeiten. Um mit der Standard-Zurück-Tastenaktion auf Aktivitätsebene fortzufahren, kann die Methode false zurückgeben.
%Vor%Tags und Links android back-stack android-viewpager