菜单未根据navigationController

时间:2019-09-19 07:53:57

标签: android androidx android-menu

说明: 考虑以下流程:片段A->登录->片段B。您可以通过右上方菜单(更多操作图标)从A导航到登录。 我希望用途达到登录后,再也没有回头路了。我的意思是

预期的行为:

  • 用户打开应用程序(片段A)
  • 用户导航到“登录”(工具栏上没有后退按钮)
  • 用户单击后退(本机后退(仅选项))
  • 应用关闭

我通过

进行管理
 navigationController.navigate(
                        R.id.fragment_login, null, NavOptions.Builder()
                        .setPopUpTo(R.id.fragment_a, true)
                        .build()
)

实际行为:

  • 用户打开应用程序(片段A)
  • 用户导航至登录->后退按钮一直显示
  • 用户点击返回
    • 用户点击本机后退->应用程序按预期关闭
    • 用户单击工具栏的后退按钮->进入片段A

我在https://github.com/rafaelaguerra/navigation_components_example/tree/menu_issue中有一个例子

1 个答案:

答案 0 :(得分:0)

我结合了两个topLevelDestinationIds

activity_base_toolbar_main.setupWithNavController(
        navController = navigationController,
        configuration =
        AppBarConfiguration.Builder(
            R.id.fragment_login,
            R.id.fragment_a
        ).build()
    )

使用

 override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            R.id.fragment_login -> {
                navigationController.navigate(
                        R.id.fragment_login, null, NavOptions.Builder()
                        .setPopUpTo(R.id.fragment_a, true)
                        .build()
                )
    ...
}

但是对我来说,这仍然不是一个干净的解决方案