Dalsze zrozumienie setRetainInstance (true)
Codokładnie dzieje się, gdy dzwoniszsetRetainInstance(true)
naFragment
? Dokumentacja praktycznie nie istnieje, a to wydaje się bardzo ważną funkcją. W szczególności chcę wiedzieć, jaka część tej sekwencji (którą wymyśliłem) jest prawdziwa:
Activity
iFragment.onDetach()
jest nazywany.Działalność zostaje zniszczona;Activity.onDestroy()
jest nazywany.TheActivity
obiekt java jest usuwany (jeśli to możliwe przez GC).NowyActivity
obiekt java jest tworzony; jego konstruktor ionCreate()
są nazywane.WActivity.onCreate()
albo mamysetContentView(...)
który ustawia układ zawierający fragment lub używamyFragmentTransaction
dodać fragment.Naprawdę nie jestem tego pewien, ale zakładam, że android jest wystarczająco inteligentny, aby znaleźć stary fragment i zadzwonićFragment.onAttach()
ponownie podłączyć go do nowegoActivity
Dalej (lub wcześniej? Kto wie?)Activity.onResume()
jest nazywany.Czy to prawda? Czy Android jest wystarczająco inteligentny, aby znaleźć stary fragment, nawet jeśli wyraźnie go używamFragmentTransaction.add(new MyFragment(), ...)
pierwszy raz? A jeśli tak, to jak unikać dodawaniainne fragment wonCreate()
? Czy muszę zrobić coś takiego ?:
if (getSupportFragmentManager().findFragmentByTag("foo") == null)
{
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(new FooFragment(), "foo").commit();
}