Wie clear view pager-Fragmente
Ich habe eine fragment A
im es ich habe eine view pager mit zwei fragment 1.1
und fragment 1.2
diese Fragmente sind Kinder, die Fragmente der fragment A
.
Nun, wenn der Benutzer bekommt auf Fragment B und dann zurück zu Ein, ich brauche zu aktualisieren
Kind-Fragmente 1.1 und 1.2 durch die Optionen in fragment B.
Das problem ist, ich kann nicht aktualisieren, werden die Fragmente, wie Sie bereits in childfragment manager, auch, wenn ich wieder zurück zu fragment Einer getItem(int position)
von der view pager nicht genannt.
Ich es geschafft, entfernen Sie alle der Kind-Fragmente vor, ich bin Einstellung der Ansicht pager-adapter, aber ich bin nicht sicher, ob dies der richtige Weg, um diese Funktionalität zu erreichen.
Ich habe 1.1 und 1.2 Verweise innerhalb Fragment Einer
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte das gleiche problem. Bei mir funktionierte es zu überschreiben FragmentStatePagerAdapter
Diese Arbeit für mich.
Eine einfache Art und Weise (nicht der beste Weg, dies zu tun ist, überschreiben
getItemPosition()
in IhremPagerAdapter
:Wenn die adapter
notifyDataSetChanged()
- Methode aufgerufen wird, dieViewPager
rufengetItemPosition()
auf die Ansichten, die es bereits kennt. Durch Rücksendung POSITION_NONE, Sie sagen dasViewPager
entfernen Sie die anzeigen. Sobald dieViewPager
entfernt die Ansicht, es ruftgetItem()
um eine aktualisierte Ansicht.So, wenn der Benutzer kehrt zurück zum Fragment Einer sagen würde:
Dies startet den Prozess der Aktualisierung alle Ihre Ansichten.
notifyDataSetChanged()
fürPagerAdapter
soll bedeuten, dass die Seiten getauscht; es unterscheidet sich von einemAdapterVIew
adapter in dass es nicht nicht mit eine änderung in der Sache selbst. In IhremsetData()
Sie könnten versuchen, den AufrufgetView().invalidate()
auf das fragment zu aktualisieren Sie die Ansicht mit Ihren Daten. Vergewissern Sie sich, dassgetView()
ist nicht null, weil es sein wird, wenn das fragment nicht dargestellt wird.getView().invalidate()
am EndesetData()
?getItemPosition()
zurückPOSITION_NONE
, danngetItem()
sollte auf jeden Fall genannt werden. Versuchen Sie, die Einstellung debug-breakpoints oder das hinzufügen von logging-Anweisungen in den adapter. Nach AufrufnotifyDataSetChanged()
auf den adapter haben, sollten Sie sehengetCount()
rief ein paar mal, danngetItemPosition()
genannt werden sollte, für jedes fragment, und wenn Sie zurückgebenPOSITION_NONE
, danngetItem()
genannt werden sollte.s not replacing A it
s herausspringen fragment aus backstack.s not replacing A it
s herausspringen fragment aus backstack. Ich brauche diese Funktionalität habe ich einige Ansichten, die Bäche, die von remote-computer. So kann icht add several fragments of A fragment(has streams views). " the activity would just pop the stack, then update A with the data. A would then update the page fragments." That what I am doing I am checking if I have fragment by calling findFragmentByTag, if I have instance of it i am popping fragments until I am not getting to fragment A, before I am getting to fragment A I am setting the arguments of A . I can
t set-Argumente doppelt.Verbrachte ich zwei Tage zu kämpfen mit diesem, und ich gerade herausgefunden, dass die Lösung zu meinem problem:
Verwenden Sie einfach FragmentStatePagerAdapter statt FragmentPagerAdapter und es funktioniert wie ein Charme!!!