方向改变时碎片堆叠的行为

Posted

技术标签:

【中文标题】方向改变时碎片堆叠的行为【英文标题】:Behavior of fragments stack upon orientation change 【发布时间】:2020-03-20 12:30:17 【问题描述】:

我的活动 A 定义了 androidx.fragment.app.FragmentContainerView,并在其布局中使用了给定的 navGraph。导航图的起点是片段 F1,它具有导航到片段 F2 的动作(动作只有 id 和目的地)。片段 F2 具有 id 和 popupTo 的操作,指定 F1 的图形 id。在我通过翻转设备更改活动方向之前,这一切都很好。方向改变后,当我执行 F2 动作时,我得到java.lang.IllegalStateException: no current navigation node 为什么会发生这种情况以及如何解决?

更新:导航组件错误。解决方法在这里:<androidx.fragment.app.FragmentContainerView> vs <fragment> as a view for a NavHost

【问题讨论】:

【参考方案1】:

这可能是由于方向改变后片段状态发生了变化。您可以在片段的 onCreate() 中使用“setRetainInstance(true)”来保存它们的状态以用于方向更改。

【讨论】:

我没有做任何方向改变,但即使我愿意,保留实例看起来更像是解决方法而不是解决方案。 但是你上面说过你通过翻转设备来改变你的活动方向,之后它会向你显示异常。请确保您已询问或未询问什么。 对不起,我很抱歉

以上是关于方向改变时碎片堆叠的行为的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法改变TableView的焦点可遍历行为?

Javascript 历史框架的经验

Android Fragment 和 Activity 在方向更改时的行为

为啥 firebug 在调试时会改变网站的行为?

方向变化的无线电组行为

启用 ARC 后,NSComparator 在排序 NSArray 时改变行为