【问题标题】:Jetpack Navigation NavigationDrawer, Custom action for menu item [duplicate]Jetpack Navigation NavigationDrawer,菜单项的自定义操作 [重复]
【发布时间】:2020-07-29 20:51:09
【问题描述】:

我在我的应用程序中使用带有 NavigationDrawer 的喷气背包导航。

<group
    android:id="@+id/nav_menu">
    <item
        android:id="@+id/reportsFragment"
        android:title="@string/trip_reports"
        android:icon="@drawable/ic_nav_reports"/>
    <item
        android:id="@+id/messagesFragment"
        android:title="@string/messages"
        android:icon="@drawable/ic_nav_chat"/>
    <item
        android:id="@+id/navItemLogout"
        android:title="@string/log_out"
        android:icon="@drawable/ic_nav_logout"/>
</group>

在 Activity/onCreate 中

  navigationView.setupWithNavController(navController)
  NavigationUI.setupWithNavController(bottomNavView, navController)

所有连接到片段的菜单项,除了一个。 navItemLogout 有具体的行动而不是方向。
添加监听器,

navigationView.setNavigationItemSelectedListener {
            if (it.itemId==R.id.navItemLogout){
                mainActivityViewModel.repository.logout()
            }
            true
        }

似乎覆盖了之前的设置。那么解决我的情况的唯一方法是使用setNavigationItemSelectedListener 进行所有抽屉项目交互吗?还是可以通过 navController setup 解决这个问题?

【问题讨论】:

    标签: android navigation-drawer android-jetpack android-architecture-navigation android-jetpack-navigation


    【解决方案1】:

    您必须调用 NavigationUI.onNavDestinationSelected() 来触发默认监听器。
    比如:

     navigationView.setNavigationItemSelectedListener {
           if (it.itemId==R.id.navItemLogout){
                mainActivityViewModel.repository.logout()
                true
            }
    
            NavigationUI.onNavDestinationSelected(it, navController)
            drawerLayout.closeDrawer(GravityCompat.START)
            true
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多