Ich versuche, das gleiche view pager + tabs
Design wie der PlayStore 5.1.x zu haben.
Hier ist mein Layout:
Mein Adapter:
%Vor%Meine Tabs und Pager werden korrekt angezeigt! aber ich habe bemerkt, dass das erste Fragment, das im View-Pager angezeigt wird, immer dasselbe ist wie das zweite. Dann, wenn ich einmal, zweimal wische und zurück zur ersten Seite wische, finde ich, dass das korrekte Fragment jetzt gezeigt wird !!
Ich kann nicht verstehen, warum dieses Verhalten, bitte ich brauche einige Erklärungen.
LÖSUNG
Das Problem war auf meine FakeFragment.newInstance()
-Methodendefinition zurückzuführen.
Ich habe es geändert, indem ich eine setArguments(args)
für meine FakeFragment
-Instanz verwendet habe und sie dann in onCreate
method abgerufen habe. Jetzt funktioniert alles gut!
Kann mir jemand erklären warum?
Ich denke, dass auf diese Weise der Wert der Position in hohem Maße vom Lebenszyklus des Fragments abhängt, also wird immer die erwartete Position sein.
1) Implementieren Sie getItemPosition(Object)
nicht, wenn Sie nicht damit umgehen. Sie sind nicht verpflichtet, es zu implementieren, und Sie könnten andere Funktionen durch falsche Implementierung brechen.
2) Der Punkt von getItem(int)
ist, ein neues Fragment zurückzugeben. Ziehen Sie das Fragmentarray ab, da es keinen Sinn ergibt.
3) Machen Sie die Adpater-Klasse static
(Es fördert die Wiederverwendbarkeit, der Adapter sollte nicht von der Elternklasse abhängen, um seine Datenmenge zu bekommen, oder?) und übergeben Sie die Category
s als Konstruktorparameter. Speichern Sie es in einer Variablen und erstellen Sie neue Fragmente gemäß diesem Datensatz. Wahrscheinlich möchten Sie auch einen Category[position]
als Parameter an den Fragmentkonstruktor übergeben und nicht nur an position
.
Die getItem()
Implementierung ist das Problem.
Sie sollten niemals die Daten in dieser Methode ändern: Rufen Sie nicht add()
auf. Ich bezweifle, dass die Adapter
an dieser Stelle wissen würde, dass Sie ein Element hinzugefügt haben.
Tags und Links android tabs android-viewpager fragmentstatepageradapter