首页 > 解决方案 > 使用导航组件和菜单项如何让向上按钮返回上一个片段而不是“主”片段

问题描述

我正在使用导航组件架构。我在操作栏中有一个菜单项,用户可以单击以转到设置。我正在使用一个活动到多个片段的方法。所以这个带有菜单项的操作栏跨越了我的所有片段。

假设我有 3 个片段。片段A是主要片段。当我在设置首选项中时,“向上”按钮总是将我带回片段 A。即使我从片段 B 或 C 调用它。

这就是我所说的向上按钮的意思(因为它在这里被称为):

在此处输入图像描述

这是我的实际NavGraph

在此处输入图像描述

从这里您可以看到 Frag A 通过操作链接到设置。我这样做是因为这是片段的宿主活动开始的主片段。无论如何,我删除了这个动作并没有什么不同,它的行为仍然相同。

这是我的 onOptionsItemSelected

//Preform action when selected
@Override
public boolean onOptionsItemSelected(MenuItem item) {

    return NavigationUI.onNavDestinationSelected(item, navController)
            || super.onOptionsItemSelected(item);
}

那么,如果从片段 C 进入设置,我该如何返回片段 C。而不是片段 A?

标签: androidandroid-fragments

解决方案


NavigationUI包含onNavDestinationSelected处理菜单项的方法。默认情况下,此方法会弹出整个后台堆栈。修复方法是将android:menuCategory="secondary"菜单中的项目添加到 xml 中,如下所述:

在此处输入图像描述


推荐阅读