FragmentPagerAdapter innerhalb des Fragments

8

Ich habe ein paar Probleme mit der Implementierung eines Designs, das auf mehreren ViewPagern basiert.

Auf hoher Ebene habe ich eine FragmentActivity mit nur einem FrameLayout, da es Inhalt ist. Ich habe 3 verschiedene Fragmente, die ich anzeigen möchte. Alle 3 sind Vollbild und nur 1 wird gleichzeitig verwendet.

Fragment 1 ist ein grundlegendes Fragment mit einigen TextViews und ImageViews. Fragment 2 hat einen ViewPager und einen FragmentPagerAdapter, der mehrere einfache Fragmente liefert. Fragment 3 enthält einen ViewPager und einen FragmentPagerAdapter, der mehrere einfache Fragmente (die sich von Fragment 2 unterscheiden)

bereitstellt

In meiner FragmentActivity onCreate () erhalte ich den FragmentManager und beginne eine Transaktion, um das, was in meinem FrameLayout ist, durch eine neue Instanz von Fragment 2 zu ersetzen.

An diesem Punkt funktioniert alles wie erwartet. Mein ViewPager in Fragment 2 funktioniert perfekt.

Jetzt habe ich eine Menüoption, die das Fragment 2 in meinem FrameLayout durch eine neue Instanz von Fragment 3 ersetzt. Das funktioniert auch gut.

Das Problem tritt auf, wenn ich versuche, Fragment 2 mit einer anderen Ersetzungstransaktion wieder in das FrameLayout einzufügen. Ich sehe meinen PagerIndicater ganz oben, aber meine Seiten sind leer.

Ich habe gerade versucht, eine neue Instanz meines Fragments 2 zu erstellen und eine Ersetzungstransaktion aufzurufen. Ich habe auch versucht, ein Tag auf meine Fragmente zu setzen, wenn ich ersetze und eine findFragmentByTag-Prüfung vor meiner Ersetzung hinzufüge, anstatt eine neue Instanz zu erstellen. Beide gaben mir nach meiner zweiten Ersetzung das gleiche Ergebnis von leeren Seiten.

Als Referenz Mein erstes Design war einfach eine FragmentActivity mit einem ViewPager und einem ViewIndicater. Ich hatte nur Fragment 2 und Fragment 3 von meiner Beschreibung oben und eine Menüoption, um zwischen ihnen zu wechseln. Zum Wechseln hatte ich 2 verschiedene FragmentPagerAdapter definiert und habe einfach ViewPager.setAdapter aufgerufen, um den ausgewählten FragmentPagerAdapter zu setzen. Das funktionierte perfekt, aber jetzt brauche ich ein neues Top-Level-Fragment, das ViewPager überhaupt nicht verwendet. Aus diesem Grund habe ich beschlossen, meine ViewPager in ihre eigenen Fragmente zu verschieben. Meine Idee war, dass ich meine Fragmente einfach in ein FrameLayout eintauschen würde.

Ich habe meinen Code gerade nicht vor mir, also kann ich nichts posten, aber ich werde morgen meiner Frage einen Code hinzufügen, um Antworten zu erleichtern.

    
brockoli 21.08.2012, 22:10
quelle

2 Antworten

14

Diese Frage ist ein mögliches Duplikat von Navigieren zurück zu FragmentPagerAdapter - & gt; Fragmente sind leer .

Wenn Ihre App damit umgehen kann (API 17), verwenden Sie getChildFragmentManager () . Dieses Problem scheint zu auftreten, wenn Sie ein Fragment verwenden, um Ihren ViewPager zu hosten und FragmentPagerAdapter zu verwenden. Der Wechsel zu FragmentStatePagerAdapter scheint das Problem ebenfalls zu beheben, aber ich denke immer noch, dass getChildFragmentManager () die klügste Sache ist.

    
blinkmacalahan 26.09.2013 20:43
quelle
0

Brockoli kann man nicht "gut" benutzen. Aber für mich hat es funktioniert.

Sie können in Ansicht 2 Layouts verwenden, wo Sie Fragmente binden. Zuerst - für Fragment mit Fragmenten. Zweitens - für andere Fragmente.

On ersetzen Fragment mit Fragmenten nicht ersetzen, sondern nur die Sichtbarkeit des ersten Layouts ändern und ein neues Fragment zum zweiten Layout hinzufügen. Entfernen Sie auf der Rückseite das Fragment aus dem zweiten Layout und setzen Sie die Sichtbarkeit für das erste Layout auf sichtbar.

    
Yura Shinkarev 17.12.2012 21:22
quelle