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
Antwort
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)
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. –
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
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. –
- 1. windbg Ausnahme in sos.threads beim ersten Lauf
- 2. Viewpager mit dynamischer Höhe funktioniert nicht (verwenden Sie immer die Höhe des ersten Fragments)
- 3. Schreiben in Datei beim ersten Lauf übersprungen
- 4. IDataErrorInfo - Ignoriere die Fehler beim ersten Laden der Ansicht.
- 5. Wie man viewpager innerhalb des Fragments in android setzt?
- 6. ViewPager + Fragments - Fragment nicht gezeigt
- 7. Fehler beim Aktualisieren des Fragments bei Dialogabbruch
- 8. Overlay-Tooltip beim ersten Lauf anzeigen
- 9. Layout-Animation funktioniert nicht beim ersten Lauf
- 10. Ersetzen eines Fragments/Tabs in einem Viewpager
- 11. Verzögerung beim Ersetzen des ViewPager-Fragments in der Navigationsleiste über FrameLayout?
- 12. Swipe-Registerkarten innerhalb des Fragments
- 13. NavigationView NotSerializableException beim Drücken des Fragments
- 14. Fehler beim Auffüllen des neuen Fragments
- 15. Fehler beim Öffnen des neuen Fragments
- 16. Ist es möglich, die Ansicht eines Fragments
- 17. ViewPager funktioniert beim ersten Mal, aber beim erneuten Laden, Fehler java.lang.IllegalStateException?
- 18. ViewPager mit Fragments - Suche reagiert nicht
- 19. Nullzeiger in aufgeblähter Ansicht beim zweiten Laden eines Google Map Fragments
- 20. Jhipster Anwendungsfehler ersten Lauf
- 21. Wie die Position einer Ansicht in einem ViewPager und CoordinatorLayout
- 22. Gradle Fails zu synchronisieren, auch beim ersten Lauf
- 23. Funktion/globale Variable nur beim ersten Lauf definieren
- 24. ViewPager-Menüsymbol Verzögerung beim Durchziehen
- 25. Teil des Fragments innerhalb ViewPager immer am unteren Rande des Bildschirms (Android)
- 26. Android: limit Fragmente laden mit einem ViewPager
- 27. Verwenden Sie Ansicht oder Fragment in ViewPager
- 28. Android: Firebase-Token ist null beim ersten Lauf
- 29. Warum heißt OnCreateView, onCreate, onActivityCreated des Fragments
- 30. Nested-Fragment mit viewpager wo viewpager nicht die Fragmente Laden
Sind Sie FragmentPageAdapter oder FragmentStatePageAdapter verwenden? – Delyan
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
@Delyan Ich benutze FragmentPagerAdapter –