以下是导致问题的情景:
- 我启动一个Activity,其中包含一个用于显示Fragment的ViewGroup。
- 我通过在事务中调用.replace()方法将Fragment A加载到此ViewGroup中,并将该事务保存到后堆栈(backstack)中。
- 我将Fragment B加载到Viewgroup中,以替换Fragment A。再次,我保存了该事务。
- 我旋转设备两次。
- 在第二次旋转时,此时不可见的Fragment A将抛出NullPointer异常。
由于我在Fragment A的onSaveInstanceState()方法中保存了某些View(例如EditTexts)的值,所以会抛出此异常。似乎在第二次旋转时,系统没有实例化这些View,因此当我请求它们的值时,会出现NullPointer异常。是否有办法避免这种情况?或者说,在Fragment事务中使用.replace操作并保存到backstack中是否不建议?