在NavDrawer中按下项目时执行代码[重复]

问题描述 投票:0回答:1
我正在将导航抽屉与NavController一起使用,这意味着我在nav_graph文件中定义了对其他片段的导航。导航抽屉中有3个项目(待办事项,配置文件和注销),前两个项目(待办事项和配置文件)更改了当前片段(这很好用),但第三个项目(注销)应通过调用以下代码来执行一些代码一个功能,但是使用navController时,我只能更改片段,如果实现OnNavigationOnItemSelectedListner,它将禁用navController功能(片段不会更改,除非我在侦听器中编写代码来更改片段)。是否可以在不禁用NavController的情况下实现注销项目的代码?

这是我正在使用的代码的一部分

活动

appBarConfiguration = AppBarConfiguration(setOf(R.id.nav_todo, R.id.nav_profile), drawerLayout) setupActionBarWithNavController(navController, appBarConfiguration) navView.setupWithNavController(navController)

nav_graph.xml

<?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_graph" app:startDestination="@id/nav_todo"> <fragment android:id="@+id/nav_todo" android:name="com.lepe.helloandroidkotlin.ToDoFragment" android:label="To - Do" tools:layout="@layout/fragment_to_do"/> <fragment android:id="@+id/nav_profile" android:name="com.lepe.helloandroidkotlin.ProfileFragment" android:label="Profile" tools:layout="@layout/fragment_profile"/> </navigation>

谢谢
android android-fragments uinavigationcontroller navigation-drawer android-jetpack
1个回答
0
投票
我设法通过仅在导航抽屉的注销项中添加侦听器来解决此问题。为此,我获得了导航抽屉菜单的实例,然后找到了要收听的项目并添加了侦听器。

在这种情况下,为了测试,我完成了活动。

val menu: Menu = navView.getMenu() val menuItem = menu.findItem(R.id.nav_logout) menuItem.setOnMenuItemClickListener { this.finish() true }

© www.soinside.com 2019 - 2024. All rights reserved.