Wie ein Fragment angehalten / fortgesetzt wird

9

Hintergrund: Ich habe einen benutzerdefinierten Container geschrieben, der drei Fragmente aufnehmen kann. Je nach Zustand dieses Containers sind nur zwei oder drei dieser Fragmente sichtbar. Um Fragmenten mitzuteilen, dass ihre Sichtbarkeit geändert wurde, habe ich zwei Optionen ausprobiert:

  1. Ich habe Fragment.setUserVisibleHint () Methode mit entsprechendem Wert. Gehostete Fragmente überschreiben diese Methode und reagieren entsprechend. Das hat geklappt.

  2. Ich rief FragmentTransaction.hide () und FragmentTransaction.show () Methoden Fragmente verstecken und zeigen. Hosted-Fragmente überschreiben Fragment.onHiddenChanged () und reagierten nach Bedarf. Das hat auch funktioniert.

Mein Problem ist, dass ich mit keiner dieser Optionen zufrieden bin. Ich möchte unsichtbares Fragment in einen Standard pausierten Zustand setzen. Vorteil dieser Option ist, dass ich den Code sauber und einfach halte, da ich keine speziellen Methoden überschreiben muss (wie setUserVisibleHint() oder onHiddenChanged() ) und ich kann alles innerhalb von onPause() und onResume() handhaben bereits implementiert.

Frage: Was ist der richtige Weg, um ein Fragment in einen pausierten Zustand zu setzen und es dann von diesem Zustand wieder aufzunehmen?

Update: Ich habe auch FragmentTransaction.detach() ausprobiert. Dies ist keine Option, da es die Ansicht zerstört, was in meinem Fall nicht erlaubt ist.

    
sergej shafarenka 16.05.2014, 18:18
quelle

1 Antwort

4

Klingt so, als ob Sie FragmentTransaction # attach und FragmentTransaction # detach , um dein Fragment einzufügen durch die Lebenszyklus-Routinen das gleiche wie FragmentPagerAdapter ( siehe Quelle hier ).

Wenn Sie Fragment mit detach() abziehen, wird% code_de% über die Methoden für die Lebensdauer von Fragment , onPause und schließlich onStop eingefügt, und wenn Sie es erneut mit onDestroyView it verbinden wird durch attach() , onCreateView und schließlich onStart life-cycle Methoden gehen.

Sie müssen sicherstellen, dass Sie sowohl die Tag- als auch die Container-ID verwenden, da Sie mehrere Fragmente an einen einzelnen Container anhängen können und Sie die onResume -Referenz vom Fragment erhalten können muss dann über sein Tag erfolgen.

    
Simon 16.05.2014 22:59
quelle

Tags und Links