我在onsaveInstance()中保存对象,但在片段旋转后,我在oncreate()中获取保存的对象,第二次调用oncreate方法(Bundle onsaveInstance),并且onsaveInstance的时间变为null。我如何解决问题或阻止oncreate()方法的调用发生两次?
答案 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部分是关于碎片。