我有一个标签主机控件,它使用片段加载标签。
每次切换选项卡时,它都会分离旧片段并附加新片段。
我注意到在此过程中调用了OnCreateView方法,并且由于每次重新创建视图,我的很多状态都会丢失。但是我注意到一些视图状态,例如编辑文本的值在分离/附加时保持不变。
我想知道当视图被完全销毁并重新创建为新视图时,Android如何自动恢复状态。当我只是切换标签时,Bundle savedInstanceState的值始终为null。当我执行旋转屏幕之类的操作时,仅会填充Bundle savedInstanceState。
据我所知,恢复状态正好在调用片段onStart方法之前发生。
答案 0 :(得分:8)
当附加和分离片段时,仅视图被销毁,片段实例保持不变。
片段管理器恢复具有id的视图的状态,savedInstanceState为null。
如果轮换,片段很可能是你在其他地方重新创建的(在activity的onCreate()中?)。
答案 1 :(得分:0)
当一个片段即将从窗口中移除(或替换)时,将调用其onSaveInstanceState(Bundle)(或onRestoreInstanceState(Bundle))方法。这将通过片段层次结构传播,恢复其先前的状态。