Jetpack Navigation NavigationDrawer,菜单项的自定义操作
Jetpack Navigation NavigationDrawer, Custom action for menu item
-
android
-
navigation-drawer
-
android-jetpack
-
android-architecture-navigation
-
android-jetpack-navigation
我在我的应用程序中使用带有 NavigationDrawer 的 Jetpack 导航。
<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 设置来解决这个问题?
您必须调用 NavigationUI.onNavDestinationSelected()
才能触发默认侦听器。
类似于:
navigationView.setNavigationItemSelectedListener {
if (it.itemId==R.id.navItemLogout){
mainActivityViewModel.repository.logout()
true
}
NavigationUI.onNavDestinationSelected(it, navController)
drawerLayout.closeDrawer(GravityCompat.START)
true
}
android
navigation-drawer
android-jetpack
android-architecture-navigation
android-jetpack-navigation
我在我的应用程序中使用带有 NavigationDrawer 的 Jetpack 导航。
<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 设置来解决这个问题?
您必须调用 NavigationUI.onNavDestinationSelected()
才能触发默认侦听器。
类似于:
navigationView.setNavigationItemSelectedListener {
if (it.itemId==R.id.navItemLogout){
mainActivityViewModel.repository.logout()
true
}
NavigationUI.onNavDestinationSelected(it, navController)
drawerLayout.closeDrawer(GravityCompat.START)
true
}