【发布时间】:2013-03-23 22:05:52
【问题描述】:
当使用FragmentActivity 时,它会自动恢复片段状态并重新创建所有片段。
我知道这主要是在onSaveInstanceState 中保存状态,然后在活动的onCreate 中恢复。稍微看一下代码,我发现所有片段都被重新创建(或仅在 retainInstance 为真时附加)并添加到 FragmentManager 但我不清楚它们以哪种方式添加到视图中,因为视图是'不会自动恢复。
我最初的问题是我得到了一些类似于that other question 的片段的副本。
我在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
}
现在它可以工作了,但我仍然不完全了解它是如何工作的。
我的疑惑是:
- 片段是在什么时候以及如何附加到视图的?我已经尝试在
onCreate的FragmentActivity中完成片段恢复。但是如果我在那之后调用setContentView,片段如何附加到视图? - 我能否在不覆盖
onSaveInstanceState的情况下阻止片段重新生成?因为由于具有不同数量的片段的不同方向布局,我的初衷是仅重新创建一个标记为保留的状态片段,而不恢复未标记为保留的其他视图片段。
【问题讨论】:
标签: android android-fragments android-orientation