片段替换后调用onSaveInstanceState
问题
onSaveInstanceState在设备旋转时针对已在片段事务中被替换的片段调用。 这导致IllegalStateException异常,并显示消息“内容视图尚未创建。
研究
我发现了以下两个看起来最相关的答案
在堆栈中使用onSaveInstanceState和碎片?
前一个片段的onSaveInstanceState称为当前片段的on-orientation
我已经尝试过了
在回答第二个问题之后,我从片段事务中删除了addtobackstack,但仍然收到错误消息。
我读了第一个问题的接受答案,但不知道如何在activity的onSaveInstanceState中获取片段引用。 我也不特别想保存这个片段,当用户离开这个片段时,它的状态不需要保存。
我也尝试将if (getView() != null) {...}
到片段中的onSaveInstanceState,但这没有什么区别。
问题
预先感谢您的帮助。
安德鲁
编辑
如果我从添加片段的事务中删除addtobackstack(null)
,并删除它,那么问题就会消失,但是一个重要的功能也是如此......我可以将这种情况添加到我的onBackPressed覆盖函数中,但它似乎有点破解,而且不是一个好方法。
在堆栈中添加片段的isVisible()检查onSaveInstanceState应该可以工作。
不可见时不需要保留实例状态。
链接地址: http://www.djcxy.com/p/58703.html