Дальнейшее понимание setRetainInstance (true)
Какиеименно так происходит, когда вы звонитеsetRetainInstance(true)
наFragment
? Документация практически не существует, и это кажется очень важной функцией. В частности, я хочу знать, какая часть этой последовательности (которую я составил) верна:
Activity
а такжеFragment.onDetach()
называется.Деятельность разрушена;Activity.onDestroy()
называется.Activity
Java-объект удаляется (когда это возможно, GC).НовыйActivity
Java-объект создан; его конструктор иonCreate()
называются.ВActivity.onCreate()
у нас либо естьsetContentView(...)
который устанавливает макет, содержащий фрагмент, или мы используемFragmentTransaction
добавить фрагмент.Я действительно не уверен в этом, но я предполагаю, что Android достаточно умен, чтобы найти старый фрагмент, и вызватьFragment.onAttach()
прикрепить его к новомуActivity
Далее (или раньше? Кто знает?)Activity.onResume()
называется.Так это правильно? Является ли Android достаточно умным, чтобы найти старый фрагмент, даже если я явно используюFragmentTransaction.add(new MyFragment(), ...)
первый раз? И если да, то как мне избежать добавлениядругой фрагмент вonCreate()
? Нужно ли делать что-то подобное?
if (getSupportFragmentManager().findFragmentByTag("foo") == null)
{
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(new FooFragment(), "foo").commit();
}