今天写一个安卓程序,发现一个切屏回来就闪退的问题,经过跟踪发现是因为切屏回来

这个第49行代码报错导致的,说的是_binding是null 这?不对吧,
我一进来使用binding的话,我就会初始化啊,

再往上一层,发现是这里调用获取了binding?嗯?我的binding消失了?
binding置空是在另外一个地方onDestroyView里面哎?

Fragment生命周期

看这个图,按理说onSaveInstanceState在onDestroyView之前,为什么我的binding没了呢?

错误原因
从MainFragment切换到SubFragment导致触发MainFragment的销毁
然后从SubFragment界面切换到后台,再切回来触发MainFragment的
onSaveInstanceState(此时binding为空),故出现异常
修复方法就是加一层非null判断
替代解决办法
看来答案就在如何处理fragments上,即使fragment没有View,但 Activity 状态的变化仍会触发 onSavedInstanceState(),所以我们可能会遇到调用 onSavedInstanceState() 的时候没有View(binding)的情况。这似乎是有意为之,因为无论是否有View,fragments都会触发这些回调监听?
建议使用view API 来保存和恢复状态(或 SavedStateRegistery)。