处理和缓解非法状态异常(“故障保存状态:活动$Fragment已清除索引:-1”)
我的 Android 应用程序管理多个片段。但是,我在字段中看到大量崩溃,其中包含以下日志行:
java.lang.IllegalStateException: Failure saving state: active xxxFragment{81e598 id=0x7f0b0069 tag_yyy} 已清除索引: -1
在Stack Overflow中搜索答案是徒劳的;我似乎有很多公司想知道这个例外到底意味着什么。深入研究异常跟踪和Android源,我可以看到异常来自我的主要活动保存其状态(FragmentActivity.onSaveInstanceState)的点,并且各个片段正在写入Mailable。每个片段都有一个索引(称为 mIndex),该索引必须是非负索引,但从代码中并不清楚为什么必须如此,因为 mIndex 永远不会在该函数中再次使用。
我不知道碎片是如何进入这种状态的,也不知道我能做些什么。我无法在自己的测试环境中重现该错误。任何人都可以说明如何避免和/或处理这种例外吗?
相关的 SO 问题:
java.lang.IllegalStateException: Failure Saving State: active 已清除片段中的索引