首页 > 解决方案 > 带有导航抽屉的导航组件 onBackPressed 问题

问题描述

我有一个导航抽屉,四个片段(A、B、C 和 D),并使用导航组件来定义片段的导航。我可以将导航抽屉与导航组件连接起来,一切正常。

关键是我希望所有的片段在左上角都有“汉堡”菜单,所以我在 AppBarConfiguration 中定义它们以实现我想要的。

但是,这种情况导致了我的问题,每个片段在导航期间创建了多个实例:示例:

Navigate(by open drawer and select menu): A -> B -> C -> D -> C
The back stack: A - B - C - D - C(topmost)

这将在返回堆栈中创建两个片段 C 实例,因此当我按住系统返回按钮直到到达片段 A 时,片段 C 将在片段 D 关闭后再次显示。

我真正想要的是片段 A 必须是真正的根目的地(片段 A 是应用打开时的默认片段),而另一个片段应该在后堆栈中只有一个实例。

Navigate: A -> B -> C -> D -> C -> B -> A -> C
The back stack must be: A - D - B - A - C(topmost)

我怎样才能达到我上面提到的目标?谢谢你。

标签: androidandroid-fragmentsandroid-architecture-navigationandroid-navigationview

解决方案


推荐阅读