Wie gehe ich mit dem Zurück-Button mit View Pager um?

8

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

    
Preethi 01.11.2012, 21:06
quelle

3 Antworten

20

Sie müssen die Methode onKeyDown() in Activity überschreiben.

%Vor%

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 +.

%Vor%     
DeeV 01.11.2012, 21:14
quelle
1

Auf der Android Docs-Seite

Ссылка

Ich habe ein Beispiel für die Handhabung von ViewPager sliding gefunden und es gibt eine Methode

%Vor%

Wählt die vorherige Seite aus oder beendet die aktive Aktivität.

    
mortalis 17.01.2018 19:38
quelle
0

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%     
DevadasTV 26.07.2016 11:18
quelle