【发布时间】:2011-11-24 17:02:42
【问题描述】:
这是导致问题的场景:
- 我使用 ViewGroup 启动一个 Acitivity,该 ViewGroup 将保存呈现的片段。
- 我通过在保存到后台堆栈的事务中调用 .replace() 将 Fragment A 加载到此 ViewGroup 中。
- 我将 Fragment B 加载到 Viewgroup 中,替换 Fragment A。我再次保存事务。
- 我旋转了设备两次。
- 在第二次旋转时,片段 A(目前不可见)将引发 NullPointer 异常。
这个异常是由 Fragment A 引发的,因为我在其 onSaveInstanceState() 方法中保存了一些视图值(例如 EditTexts)。看来,在第二次轮换时,系统没有实例化这些视图,所以当我询问它们的值时,我得到了 NullPointer 异常。可以以某种方式避免这种情况吗?还是在不建议的情况下在保存到后台堆栈的片段事务中使用 .replace 操作?
【问题讨论】: