Android Kotlin – 无法调用onNavigationItemSelected方法

我在Kotlin做了抽屉菜单,我想用这个菜单项。 在java中,我正在调用onNavigationItemSelected方法,但是当我想在Kotlin中使用它时,它不会出现。 这是我的代码:

 <android.support.v4.widget.DrawerLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/drawerLayout" tools:context="com.example.zamknijryjx.liobrus.UserActivity"> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/imie" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="40dp" android:text="Imie" android:textSize="50sp" android:textColor="@color/black" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout> <android.support.design.widget.NavigationView android:layout_width="wrap_content" android:layout_height="match_parent" app:menu="@menu/navigation_menu" android:layout_gravity="start" app:headerLayout="@layout/navigation_header"> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> 

这里是navigation_menu.xml

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/nav_home" android:title="Home"/> <item android:id="@+id/nav_sprawdziany" android:title="Sprawdziany"/> <item android:id="@+id/nav_prace" android:title="Prace klasowe"/> </menu> 

并在我的活动代码:

 mToggle = ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close) drawerLayout.addDrawerListener(mToggle!!) mToggle!!.syncState() supportActionBar!!.setDisplayHomeAsUpEnabled(true) override fun onOptionsItemSelected(item: MenuItem?): Boolean { if (mToggle!!.onOptionsItemSelected(item)) { return true } return super.onOptionsItemSelected(item) } 

所以我想做这样的事情:当用户点击带有id的菜单项例如nav_home它使烤面包。 非常感谢您的帮助!

您可以在布局文件中为您的NavigationView一个ID:

 <android.support.design.widget.NavigationView android:id="@+id/navigationView" ... > </android.support.design.widget.NavigationView> 

然后在你的UserActivity添加一个监听器:

 navigationView.setNavigationItemSelectedListener { when (it.itemId) { R.id.nav_home -> { // handle click true } else -> false } }