当使用FragmentActivity
时,它会自动恢复碎片状态并重新创建所有碎片。自动碎片恢复如何工作
我知道这样做主要是将状态保存在onSaveInstanceState
中,然后在活动的onCreate
中恢复。仔细看看代码,我发现所有片段都被重新创建(或者只有在retainInstance为true的情况下才会被附加)并添加到FragmentManager
中,但是我不清楚它们以何种方式添加到视图中,因为视图不是自动恢复。
我原来的问题是我得到一些类似于that other question的片段的重复。 我workarrounded在onCreate
有:
Fragment f = fm.findFragmentByTag(tagName);
if(f==null) {
f = createFragment();
fm.beginTransaction().add(R.id.myContainer,f,tagName).commit();
} else {
//Nothing it's on the view
}
现在它的工作原理,但我仍然不能完全理解它是如何工作的。
我的疑惑是:
- 在这一刻,以及如何被碎片附着在查看?我已经试验过片段的恢复是在
FragmentActivity
的onCreate
中完成的。但是如果我在那之后打电话setContentView
,片段如何附加到视图上? - 我可以防止片段娱乐而不覆盖
onSaveInstanceState
?由于不同的方向布局和不同数量的片段,我的初衷是重新创建一个标记为保留的状态片段,而不会恢复未标记为保留的其他片段片段。