Zunächst verwende ich FragmentStatePagerAdapter, um einen ViewPager mit Fragmenten zu versehen, die angezeigt werden sollen.
Wenn App im aktiven Zustand ist (d. h. nach onResume()
), wird der Aufruf von setAdapter auf dem ViewPager immer funktionieren und mein ViewPager wird aktualisiert, die Methode getItem(int position)
im Adapter wird aufgerufen.
Wenn ich jedoch nach einer Orientierungsänderung in der Methode onCreate(Bundle savedInstance)
meiner Aktivität setAdapter aufruft, wird die Methode getItem(int position)
nicht aufgerufen, und das alte Fragment wird wiederverwendet.
Ich denke, vielleicht macht der FragmentManager etwas, was ich nicht verstehe? Der Fragment Manager ist das einzige, was während der Orientierungsänderung nicht zerstört wird.
Danke
Nun, hier ist die Sache, die ich herausgefunden habe (es ist sehr, sehr merkwürdig).
Wenn Sie Objekte in PagerAdapter
aktualisieren müssen, werden Sie es höchstwahrscheinlich nicht schaffen, neue Instanzen von PageAdapter
zu erstellen, wenn Sie die gleiche FragmentManager
übergeben und an% übergeben. co_de% Aufruf von setAdapter
, zB:
oder
%Vor% Aber wenn Sie ViewPager
s ständig wechseln, wenn Sie FragmentManager
initialisieren, wird es funktionieren.
Aus meiner Sicht ist es schrecklich ... Wenn jemand Ideen hat, wie man Gegenstände in PagerAdapter
richtig auffrischt (und nicht auf diese schmutzige Art), teile deine Gedanken mit anderen:)
Ich benutze das FragmentPagerAdapter und mViewPager.setAdapter () ist nicht arbeiten.Ich behebe es in den folgenden Schritt:
(1) Holen Sie sich die aktuelle Fragmentliste.
(2) Fragment mamuell entfernen
%Vor%(3) Setzen Sie den neuen FragmentPagerAdapter auf ViewPager
%Vor%Entfernen Sie einfach die Fragmente, bevor Sie einen neuen Adapter einrichten.
Tags und Links android android-viewpager adapter