导航架构组件 - 导航抽屉

5

我正在使用带有导航抽屉的导航组件。

  1. I have added Fragments for each Navigation item in the menu.
  2. Add NavHostFragment where this Fragment will be swapped
  3. Then added Fragments as Destinations
  4. I want master Detail Navigation i.e. start destination -> fragment 2 back button -> start destination start destination -> fragment 2 -> fragment 3 -> fragment 4 back button -> start destination

  5. My question is whether I should add any connections to this graph?

  6. I also need to have one menu item which is just logout function call not fragment swapping, so I could not configure it with default setup

    val navController = findNavController(R.id.main_nav_host_fragment)
    nav_view.setupWithNavController(navController)
    

但是我们必须使用

nav_view.setNavigationItemSelectedListener(this)

override fun onNavigationItemSelected(item: MenuItem): Boolean {
        // Handle navigation view item clicks here.
        when (item.itemId) {

            R.id.navSignOut -> {
                loginViewModel.logout()
            }
            else -> {
                val navController = findNavController(R.id.main_nav_host_fragment)
                navController.navigate(item.itemId)
            }
        }

        drawer_layout.closeDrawer(GravityCompat.END)
        return true
    }

我需要在主应用程序活动的导航抽屉上方(模态)显示登录活动。我可以使用Navigation Graph吗?如果可以,该如何操作? 登录活动应具有以下功能:按返回按钮->关闭应用程序;如果已注销->启动主活动的上方;如果已登录,则转到主活动。 所以我有几个问题: 1. 我是否需要使用任何操作? 2. 我是否需要为抽屉使用自定义导航或setupWithNavController()? 3. 模态登录活动导航怎么处理?

1
我也遇到了同样的问题。正在寻找答案!! - Deepanshu Sinha
2个回答

0

Michael,导航架构一开始并不容易理解,你的想法并不是个例外。但由于这种导航是新的,我建议你跟随代码实验室。

https://codelabs.developers.google.com/codelabs/android-navigation/#0

我看到你关闭抽屉的代码行。代码实验室有关于如何设置带有导航和UI的导航抽屉的说明。

希望对你有所帮助。


我如何使用导航控制器将导航抽屉和选项卡组合起来? - Otto Cheley
你不能这样做,也不应该这样做。选项卡不是用来修改导航的,指南中明确说明:“选项卡可在不同屏幕、数据集和其他交互之间组织内容”,使用方式为“选项卡可组织并允许在相关且处于同一层次结构的内容组之间进行导航。”(https://material.io/components/tabs/#)这就是为什么你无法在任何地方找到如何这样做的原因。虽然有一个底部导航组件可以与导航架构一起使用。 - Pedro Varela
我能否将底部导航与抽屉式导航栏结合使用? - Otto Cheley
是的,但最好只使用其中一种。我建议您阅读指南以了解哪种更适合您的应用程序。 - Pedro Varela

0
我理解你问题中提到的部分是如何导航到注销页面。
通常,当用户点击注销时,您希望将其注销并导航到启动屏幕。
因此,您需要将启动活动添加到 nav_graph 中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接