以下是导致问题的方案:
Fragment A引发了这个异常,因为我在onSaveInstanceState()方法中保存了一些Views(EditTexts eg)值。看来,在第二次旋转时,系统不会实例化这些视图,所以当我询问它们的值时,我会得到一个NullPointer异常。这可以以某种方式避免吗?或者是在片段转换中使用.replace操作保存在backstack上?未经修改?
答案 0 :(得分:3)
我已经有了这个,但是不能完全回忆起我所做的修复细节,但一般来说(并为大脑转储道歉)我做了以下事情:
在setRetainInstance(true)
中调用onCreate
以避免片段重新播放
保存onSaveInstanceState
中编辑控件等的状态,以便在活动被终止时使用,并使用非null包恢复(您不应该获取非空包方向改变为1。)
维护成员变量中的编辑控件值(因为不会重新创建片段),确保它们从编辑控件中的onDestroyView
更新,然后使用它们恢复编辑控件值onCreateView
有一个标记,我在onCreateView
中设置为true,在onDestroyView
设置为false,并确保在视图不在时触摸UI控件。
BTW在将事务添加到后台堆栈时使用replace
完全可以。
希望那里有一些有用的东西。彼得。