当你在 Fragment
上调用 setRetainInstance(true)
时,没错会发生什么?文档实际上是不存在的,这似乎是一个非常重要的功能。具体来说,我想知道这个序列(我编造的)有多少是真的:
- 用户旋转设备。
- 该片段与
Activity
分离,并调用Fragment.onDetach()
。- 活动被销毁; 调用
Activity.onDestroy()
。- 删除
Activity
java 对象(如果可能,通过 GC)。- 创建一个新的
Activity
java 对象; 它的构造函数和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();
}