Ich habe ViewPager
, das ich für die Anzeige von wenigen Fragmenten verwende, ich habe auch TextView
auf meinem FragmentActivity
. Ich muss den Text in TextView
ändern, abhängig davon, welches Fragment momentan in ViewPager
ausgewählt ist. Das Problem, dem ich begegnet bin: ViewPager
hat einen Caching-Mechanismus, es instantiiert Fragmente, bevor sie für den Benutzer sichtbar sind, zum Beispiel wenn ich die zweite Seite in ViewPager
fragment auf der dritten Seite wähle. Was mehr ist, kann ich nicht inneres Fragment feststellen ist dieses Fragment sichtbar jetzt oder es wird gerade von ViewPager
geschaffen, aber nicht wirklich sichtbar für Benutzer. Ich habe versucht, OnPageChangeListener
dafür zu verwenden, aber die darin vorgenommenen Änderungen waren für mich inakzeptabel langsam (die Seite blätterte und dann änderte sich mein TextView
)
Was ich eigentlich brauche: Ich muss feststellen, welches Fragment momentan in ViewPager
sichtbar ist, egal von FragmentActivity
oder von Fragment
selbst. Wie kann ich das erreichen?
ViewPager.OnPageChangeListener
ist der offensichtliche Ansatz hier. Und wie Sie bemerkt haben, wird onPageSelected(int position)
erst aufgerufen, wenn die Seite zentriert ist (wenn Sie die Seite langsam scrollen, indem Sie berühren und gedrückt halten).
Was ich eigentlich brauche: Ich muss herausfinden, welches Fragment momentan in ViewPager sichtbar ist, egal ob es sich um FragmentAktivity oder um Fragment selbst handelt. Wie kann ich das erreichen?
Zuerst haben Sie "derzeit sichtbar" nicht definiert. In einem ViewPager
können beide Seiten beim Streichen zwischen ihnen gesehen werden, also welche ist "derzeit sichtbar" mitten im Streichen? Meine Annahme ist, dass Sie überlegen würden, welche Seite "besser sichtbar" ist, "aktuell sichtbar".
Nachdem ich das gesagt habe, würde ich mir die Verwendung von onPageScrolled (int position, float positionOffset, int positionOffsetPixels)
. Es scheint, dass positionOffset
möglicherweise in der Lage ist, Ihnen die Informationen zu geben, die Sie benötigen. Ich würde es mit einigen Logging-Anweisungen testen, um zu sehen, welche Daten zurückgeben.
Tags und Links android android-fragments android-viewpager