Frage

Ich habe ein FragmentActivity Welches beherbergt a FragmentStatePagerAdapter. Der Pager enthält mehrere Instanzen desselben Fragments, damit der Benutzer zwischen den Elementen in einer Liste wischen kann. Ich möchte dem Benutzer ein Optionsmenü zur Verfügung stellen, das nur auf dem sichtbaren Element wirkt.

Zum Beispiel habe ich eine Liste von Bildern, die in ImageViews in Fragmenten angezeigt werden. Ich möchte ein Option Menüelement, mit dem der Benutzer das Bild als Hintergrundbild festlegen kann.

Im Moment, wenn ich das versuche, wann onPrepareOptionsMenu wird aufgerufen, der Code wird in mehreren Fragmenten aufgerufen (normalerweise der Strom + nächstes). Gleiches Gleiches, wenn ein Element ausgewählt ist. Dies führt dazu, dass das falsche Bild als Tapete eingestellt wird.

Wie kann ich verhindern, dass das Optionsmenü mehr als das aktuell sichtbare Fragment ausgelöst wird?

War es hilfreich?

Lösung

Meine Lösung war, die zu verwenden setOnPageChangeListener Methode der ViewPager Um den Überblick zu behalten, welches Fragment Der Index war derzeit mit dem sichtbar onPageSelected zurückrufen. Sie müssen immer noch den ersten Index selbst bekommen, aber in meinem Fall war dies trivial

Andere Tipps

Sie können den Optionsmenü -Rückruf in der ONTACTIONItIntemSEMT -Auswahl der Aktivität abfangen und das Element ausdrücklich vom richtigen Fragment aufrufen, um das wahre zu erhalten, um anzuzeigen, dass Sie damit umgegangen sind.

Der Trick besteht darin, die Sethasopions (true | false) in jedem Fragment zu ändern, bevor es ein Populationsmenü hat. Das hat mir schon geholfen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top