【发布时间】:2015-05-22 21:26:47
【问题描述】:
问题
onSaveInstanceState 正在为已在片段事务中替换的片段调用设备轮换。这会导致 IllegalStateException 并显示消息“尚未创建内容视图。
研究
我找到了以下两个似乎最相关的答案
Using onSaveInstanceState with fragments in backstack?
onSaveInstanceState of previous fragment is called on-orientation of current fragment
我已经尝试过了
在回答第二个问题后,我已从片段事务中删除了 addtobackstack,但仍然出现错误。
我阅读了第一个问题的已接受答案,但不确定如何在 onSaveInstanceState 中为活动获取片段引用。我也不是特别想保存那个片段,当用户离开那个片段时,它的状态不需要保存。
我也尝试将if (getView() != null) {...} 添加到片段中的 onSaveInstanceState 中,但这没有任何区别。
问题
- 为什么即使片段没有被添加到后台堆栈,也会调用 onSaveInstanceState?
- 当用户完成片段后,以某种方式杀死片段的正确方法是否正确?
- 有其他解决方案吗?
提前感谢您的帮助。
安德鲁
编辑
如果我从添加片段的事务中删除 addtobackstack(null) 并且删除它的那个问题就消失了,但是一个重要的功能也会这样做......我可以将这种情况添加到我的 onBackPressed 覆盖函数但这似乎有点小技巧,而且不是很好。
【问题讨论】: