问题
onSaveInstanceState在设备轮换时被调用,该片段已在片段事务中被替换。这导致IllegalStateException,并且尚未创建消息" Content视图。
研究
我找到了以下两个似乎最相关的答案
Using onSaveInstanceState with fragments in backstack?
onSaveInstanceState of previous fragment is called on-orientation of current fragment
我已尝试过的内容
在第二个问题的答案之后,我从片段事务中删除了addtobackstack,但仍然收到错误。
我读了第一个问题的接受答案,但不知道如何在onSaveInstanceState中为活动获取片段引用。我也不是特别想要保存该片段,当用户离开该片段时,它的状态不需要保存。
我也尝试将if (getView() != null) {...}
添加到片段中的onSaveInstanceState,但这没有任何区别。
问题
提前感谢您的帮助。
安德鲁
修改
如果我从添加片段的事务中移除addtobackstack(null)
以及删除它的那个,问题就会消失,但是一个重要的功能也是如此...我可以将这个案例添加到我的onBackPressed覆盖功能,但它看起来有点像黑客,并没有很好的方式。
答案 0 :(得分:1)
添加isVisible()检查backstack中片段的onSaveInstanceState应该有效。
当不可见时,无需保留实例状态。