在后台堆栈上的所有片段,在旋转后在onSaveInstanceState中都有空值
在旋转设备后,我们在backstack或fragmentSupportManager中拥有的任何片段将激活onSaveInstanceState。
但是,在第一次轮换之后,里面的所有内容都是空(所有变量),并且应用程序因空指针异常而崩溃。
我想知道为什么如果片段几乎被破坏为空(所有值都为空),为什么片段仍然存在并且onSaveInstanceState被调用?
我的代码很深,有多个基类和演示程序类,可以将很多代码从片段中提取出来。 我也只使用一个Activity并使用fragmentTransaction.replace。
如果人们需要,我可以添加代码,但有很多! 我希望有一些明显的东西,或者我不了解后台工作的方式/保留它的碎片。
我看过的链接没有帮助
onSaveInstanceState是否会在后端堆栈中的碎片上调用?
一劳永逸,如何正确地将Fragments的实例状态保存在回栈中?
在堆栈中使用onSaveInstanceState和碎片?
BackStack碎片空白旋转
在堆栈中保存碎片状态
我也有完全一样的问题。 可以说我有Frag A,称为Frag B当我从Frag A到Frag B时,Frag A存在于后台并且不显示。 在Frag B中,在第一次旋转时,为Frag A调用onSavedInstanceState()
,并且它工作正常,因为背堆栈中的Frag A存在并且所有数据都在那里。当我在Frag B中再次旋转设备时, Frag A onSavedInstanceState()
再次被调用,出于某种未知的原因..在这些调用之间,从未发布过恢复,因为从未调用过onSavedInstanceState()
A, onSavedInstanceState()
A不可见。 为什么这样做,我有0线索。
我所做的是检查Bundle是否为空(并且bundle在第二次旋转后存在,它只是空的),如果是,我尝试从头重新创建Frag,这意味着从请求中重新加载新数据...这是不是最好的解决方案..
链接地址: http://www.djcxy.com/p/58705.html上一篇: All fragments on backstack, have nulls in onSaveInstanceState, after rotation