luj*_*jop 19 android android-fragments android-orientation
使用FragmentActivity它时会自动恢复片段状态并重新创建所有片段.
我知道这主要是为了保存状态onSaveInstanceState,然后在活动中恢复onCreate.看一下代码,我看到所有片段都被重新创建(或者只有在retainInstance为真时才附加)并添加到了FragmentManager但是我不清楚它们以哪种方式添加到视图中,因为视图不是自动的恢复.
我最初的问题是,我得到了一些类似于其他问题的碎片重复.我的工作原则是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
}
Run Code Online (Sandbox Code Playgroud)
现在它有效,但我仍然不完全理解它是如何工作的.
我的怀疑是:
onCreate的FragmentActivity.但是如果我setContentView在那之后打电话,片段如何附加到视图?onSaveInstanceState吗 因为由于具有不同数量的片段的不同方向布局,我的初衷是仅重新创建标记为保留的一个状态片段,而不恢复未标记为保留的其他视图片段.查看层次结构未自动恢复.因此,在Fragment.onCreateView()或中Activity.onCreate(),您必须恢复所有视图(从xml或以编程方式).每个ViewGroup包含片段的ID必须与第一次创建时具有相同的ID.创建视图层次结构后,Android会恢复所有片段并将其视图放在右侧,ViewGroup这要归功于ID.假设Android记住ViewGroup片段所在的ID .这发生在onCreateView()和之间onStart().
我认为可以保留片段重新创建,但是,在保存片段的ViewGroup上,将可见性设置为GONE.这样,片段不会出现,您可以稍后以编程方式删除它.
| 归档时间: |
|
| 查看次数: |
3290 次 |
| 最近记录: |