这是导致问题的情况:
片段A抛出此异常,因为我将Views(例如EditTexts)的某些值保存在其onSaveInstanceState()方法中。似乎在第二次旋转时,系统没有实例化这些View,所以当我询问它们的值时,我得到了NullPointer异常。可以避免这种情况吗?还是在片段事务中使用.replace操作不建议将其保存到Backstack中?
最佳答案
我已经做到了,但是不能完全回忆起我所做的工作的细节,但是总的来说(以及对人才流失的道歉),我会执行以下操作:
setRetainInstance(true)
中的onCreate
以避免碎片重新生成onSaveInstanceState
中,以便使用非空 bundle 包进行恢复(定向更改为1时,您不应该使用非空 bundle 包)。onDestroyView
onCreateView
中将其设置为true,在onCreateView
中将其设置为false,并确保在 View 不存在时不触摸UI控件。 顺便说一句,在将事务添加到后台堆栈时使用
onDestroyView
完全可以。希望那里有帮助的东西。彼得