Einzelne Seite in Viewpager vorübergehend / dynamisch deaktivieren

Ich habe einen erweiterten FragmentPagerAdapter, der einem ViewPager 3 Fragmente zur Verfügung stellt. Dadurch erhalte ich 3 Seiten, zwischen denen ich entweder wischen kann oder die ich der Aktionsleiste hinzugefügt habe, um manuell eine Seite auszuwählen.

Ich möchte den Benutzer vorübergehend daran hindern, auf die letzte Seite zuzugreifen (eine allgemeinere Lösung zum Deaktivieren einer bestimmten Seite wäre ebenfalls interessant, aber nicht erforderlich). Ich werde dann ihren Zugriff mit einem Rückruf von einem der Fragmente wieder aktivieren.

Ich habe Antworten auf einige ähnliche Fragen durchgelesen, in denen es darum geht, das Wischen nicht zuzulassen, indem Sie onTouchEvent und onInterceptTouchEvent überschreiben und dann eine benutzerdefinierte Gestenerkennung verwenden, oder sogar eine halbe Lösung mit beginFakeDrag ().

Meine aktuelle Lösung legt einfach eine kleinere Anzahl von Elementen im Adapter fest, verwendet notifyDataSetChanged () und ändert sie bei Bedarf zurück. Gibt es elegante Alternativen zu diesen Ansätzen, die möglicherweise keine Änderung des Datensatzes erfordern?

Ich sehe auch, dass ActionBar.Tab keine setEnable () -Methode hat, und die meisten schlagen vor, nur die Registerkarte zu entfernen. Gibt es eine Möglichkeit, eine Registerkarte sichtbar, aber nicht auswählbar zu lassen? Mein Ansatz bestand darin, zu definieren, welche Registerkarte deaktiviert ist, und die zuvor ausgewählte Registerkarte erneut auszuwählen, wenn der Benutzer die deaktivierte auswählt.

Bearbeiten Ich möchte sowohl das Tabulieren als auch das Streichen zur letzten Seite deaktivieren.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage