java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 fragmentManagerImpl.restoreAllState

最近在项目中遇到了一个奇怪的问题,会在有些机型上出现数组越界的问题,而这个问题报在了原生的api里,下面是完整log日志

图1

源码报错的位置是在oncreate中读取savedInstanceState的时候恢复fragment的状态restoreAllstate

图2

在Fragmentmanager 中restoreAllState的实现


图3


图4

问题就出在这个bse.mIndex,其实我的项目里面根本就没有用到过fragment,但问题却出现在这里,但是我的项目是横屏,有可能是横屏的生命周期导致的问题,这也是我自己推测的,具体根本原因还请大神指点,至于解决办法,我采取了很暴力的美学方法,如下


图5

因为我的Activity就没有用到fragment,所以我在获取saveInstanceState之前,将fragment相关移除掉,


图6
图7

正是我们移除的那个字段,然后我们再看一下里面是如何处理的这个Parcelable p,


图8

很明白,直接返回了,也就不会往下执行,到此结束,虽然很暴力但是很完美,还是期望对这个问题有深刻理解的大神,可以讲讲这个问题出现的原因

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容