如何在片段旋转时防止oncreate()和oncreateView()的调用发生TWICE?

时间:2014-04-26 22:19:07

标签: android rotation fragment

我在onsaveInstance()中保存对象,但在片段旋转后,我在oncreate()中获取保存的对象,第二次调用oncreate方法(Bundle onsaveInstance),并且onsaveInstance的时间变为null。我如何解决问题或阻止oncreate()方法的调用发生两次?

1 个答案:

答案 0 :(得分:0)

也许在你的片段的onCreate()回调方法中使用setRetainInstance(true)是很冷的帮助:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRetainInstance(true);    
}

如果设置为“true”,当方向更改时,片段实例不会被销毁(仅销毁其视图层次结构),当活动正在进行时,它会从onDestroyView()传递到onDetach()(跳过onDestroy())完了。当方向更改完成并创建一个新的Activity时,将调用onAttach(),跳过onCreate(),并调用onCreateView()。这样片段就会保留其状态。

为了更好地理解保存和检索片段状态的不同方法,我建议你阅读这个 - > saving-and-retrieving-android-instance-state-part-2/ 第1部分是关于活动,第2部分是关于碎片。

相关问题