2013-08-20 14 views
10

Ich benutze ViewPager, das 3 Fragmente enthält, jedes Fragment lädt eine Liste. Das Problem ist, wenn die Anwendung zum ersten Mal ausgeführt wird und ich zum nächsten Fragment wische, muss dieses Fragment irgendwann geladen werden (ungefähr 2 Sekunden), bevor seine Ansicht sichtbar ist. Das ist ein sehr seltsames Verhalten. Alles, was ich will, ist, sobald die App gestartet ist, sollten alle Fragmente in ViewPager für den Benutzer bereit sein, so dass es keine Wartezeit gibt, wenn sie durch Fragmente wischen. Wie kann ich das machen?Die Ansicht des Fragments in ViewPager beim ersten Lauf laden

+0

Sind Sie FragmentPageAdapter oder FragmentStatePageAdapter verwenden? – Delyan

+0

Sie könnten in Betracht ziehen, die Fragmentlistenadapter in der Aktivität (oder im Pager) zwischenzuspeichern. Dadurch wird verhindert, dass die Adapter bei jedem Seitenwechsel neu geladen werden. – AedonEtLIRA

+0

@Delyan Ich benutze FragmentPagerAdapter –

Antwort

28

Rufen Sie einfach setOffscreenPageLimit() in onCreate() (nach der Initialisierung von ViewPager). OffscreenPageLimit legt die Anzahl der Seiten fest, die auf beiden Seiten der aktuellen Seite gespeichert werden sollen (in Ihrem Fall 2). Damit werden alle Ihre Fragmente instanziiert.

(Eine andere (sehr zu empfehlen) Möglichkeit ist die Leistung Ihrer Listen oder listadapters zu erhöhen, weil eine Ladezeit von 2 Sekunden klingt nicht gut)

+0

Wenn Sie es auf '2' setzen, wird bereits sichergestellt, dass alle 3 Fragmente beibehalten werden. Der Wert legt die Anzahl der Seiten fest, die auf beiden Seiten der aktuellen Seite ** verbleiben sollen, nicht die Gesamtzahl der Seiten. –

+0

Ja, ich weiß. Man kann aber auch das Limit auf '100' setzen und es funktioniert immer noch ;-) Dies war nur ein Beispiel, natürlich kann er das Limit auf' 2' setzen, wenn er möchte. – Namenlos

+1

Nun, warum sagst du in deinem Fall * "in deinem Fall ** 3 **" *? Das ist nicht korrekt, und es signalisiert mir, dass du es nicht wusstest, weshalb ich ursprünglich einen Kommentar hinzugefügt habe, um darauf hinzuweisen. –

Verwandte Themen