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:
Ich rief FragmentTransaction.hide ()
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.
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.
Tags und Links android android-fragments