android如何在片段分离/附加中保留视图状态

时间:2012-10-16 14:51:10

标签: android tabs state fragment

我有一个标签主机控件,它使用片段加载标签。

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

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

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

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

2 个答案:

答案 0 :(得分:8)

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

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

如果轮换,片段很可能是你在其他地方重新创建的(在activity的onCreate()中?)。

答案 1 :(得分:0)

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