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