Что именно происходит, когда вы вызываете setRetainInstance(true) на Fragment? Документация практически не существует, и это кажется очень важной функцией. В частности, я хочу знать, сколько из этой последовательности (что я составил) верно:
- Пользователь поворачивает устройство.
- Фрагмент отделяется от
Activityи вызываетсяFragment.onDetach().- Активность уничтожается;
Activity.onDestroy().- java-объект
Activityудаляется (по возможности, с помощью GC).- Создан новый java-объект
Activity; его конструктор иonCreate().- В
Activity.onCreate()мы либо имеемsetContentView(...), который устанавливает макет, содержащий фрагмент, либо мы используемFragmentTransactionдля добавления фрагмента.- Я действительно не уверен в этом, но я предполагаю, что андроид достаточно умен, чтобы найти старый фрагмент, и вызовите
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();
    }
Почему в документации нет? Ха нет, просто шучу, не отвечайте на это!
