2

我有一个选项卡主机控件,它使用片段加载选项卡。

每次切换选项卡时,它都会分离旧片段并附加新片段。

我注意到在此过程中调用了 OnCreateView 方法,并且我的很多状态都丢失了,因为它每次都重新创建视图。但是,我注意到某些视图状态(例如编辑文本的值)在分离/附加时保持不变。

我想知道当视图被完全销毁并重新创建为新视图时,Android 如何自动恢复状态。当我只是切换选项卡时,Bundle savedInstanceState 的值始终为 null。Bundle savedInstanceState 仅在我执行旋转屏幕之类的操作时才会填充。

据我所知,这种状态恢复发生在片段 onStart 方法被调用之前。

4

2 回答 2

9

当附加和分离片段时,只有视图被销毁,片段实例保持不变。

片段管理器恢复具有 id 的视图的状态,且 savedInstanceState 为空。

在旋转的情况下,片段可能由您在其他地方重新创建(在活动的 onCreate() 中?)。

于 2012-12-05T22:20:09.140 回答
0

当一个片段即将从窗口中移除(或替换)时,它的onSaveInstanceState(Bundle)(或 onRestoreInstanceState(Bundle))方法会被调用。这将通过片段层次结构传播,恢复其先前的状态。

于 2012-10-16T14:58:54.620 回答