當使用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
?由於不同的方向佈局和不同數量的片段,我的初衷是重新創建一個標記爲保留的狀態片段,而不會恢復未標記爲保留的其他片段片段。