导航抽屉中菜单项的 OnClickListener Activity
OnClickListener for Menu Items in Navigation Drawer Activity
我在用什么?
我正在使用 kotlin
编写默认导航抽屉 activity
我的问题
如图所示,有一个“三点下拉菜单”:
当我点击菜单时调用的功能很少。不确定正在执行哪段代码。
我的问题
Navigation Drawers 有很多教程,但我找不到针对特定情况的任何教程,尤其是对于 kotlin。
drawer.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
<item
android:id="@+id/action_logout"
android:orderInCategory="100"
android:title="@string/action_logout"
app:showAsAction="never" />
Drawer.kt
根据菜单操作,我没有看到任何代码
您可以在 MainActivity 中覆盖它,以处理菜单项点击
示例代码
override fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
when (menuItem.itemId) {
R.id.action_settings-> {
Toast.makeText(this, "Settings", Toast.LENGTH_SHORT).show()
//handle click on settings
}
R.id.action_logout-> {
Toast.makeText(this, "Logout", Toast.LENGTH_SHORT).show()
//handle click on logout
}
}
drawer_layout.closeDrawer(GravityCompat.START) //Closing the drawer
return true // because you handled the clicks
}
如果我对你的理解是正确的,你想处理菜单点击。我不确定这是否与 NavigationDrawer
有任何关系。从所附的屏幕截图看来似乎没有。
如果是这样,您应该实施 onOptionsItemSelected
来处理您想要发生的任何操作,例如:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId) {
R.id.action_settings -> println("handle me!") return true
}
return super.onOptionsItemSelected(item)
}
您需要 return true
或 false
来表明您的代码是否处理了菜单点击。
三点菜单是 overflow menu,与 DrawerLayout
不。
在你的Activity
中:
override fun onCreate(savedInstanceState: Bundle?) {
...
val toolbar : Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
...
}
然后您必须重写 onCreateOptionsMenu()
以扩充您之前定义的菜单资源:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.toolbar_menu, menu)
return
最后覆盖 onOptionsItemSelected
来处理项目菜单上的点击:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId) {
R.id.action_logout -> //....) return true
}
return super.onOptionsItemSelected(item)
}
我在用什么?
我正在使用 kotlin
我的问题
如图所示,有一个“三点下拉菜单”:
当我点击菜单时调用的功能很少。不确定正在执行哪段代码。
我的问题
Navigation Drawers 有很多教程,但我找不到针对特定情况的任何教程,尤其是对于 kotlin。
drawer.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
<item
android:id="@+id/action_logout"
android:orderInCategory="100"
android:title="@string/action_logout"
app:showAsAction="never" />
Drawer.kt
根据菜单操作,我没有看到任何代码
您可以在 MainActivity 中覆盖它,以处理菜单项点击
示例代码
override fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
when (menuItem.itemId) {
R.id.action_settings-> {
Toast.makeText(this, "Settings", Toast.LENGTH_SHORT).show()
//handle click on settings
}
R.id.action_logout-> {
Toast.makeText(this, "Logout", Toast.LENGTH_SHORT).show()
//handle click on logout
}
}
drawer_layout.closeDrawer(GravityCompat.START) //Closing the drawer
return true // because you handled the clicks
}
如果我对你的理解是正确的,你想处理菜单点击。我不确定这是否与 NavigationDrawer
有任何关系。从所附的屏幕截图看来似乎没有。
如果是这样,您应该实施 onOptionsItemSelected
来处理您想要发生的任何操作,例如:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId) {
R.id.action_settings -> println("handle me!") return true
}
return super.onOptionsItemSelected(item)
}
您需要 return true
或 false
来表明您的代码是否处理了菜单点击。
三点菜单是 overflow menu,与 DrawerLayout
不。
在你的Activity
中:
override fun onCreate(savedInstanceState: Bundle?) {
...
val toolbar : Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
...
}
然后您必须重写 onCreateOptionsMenu()
以扩充您之前定义的菜单资源:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.toolbar_menu, menu)
return
最后覆盖 onOptionsItemSelected
来处理项目菜单上的点击:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId) {
R.id.action_logout -> //....) return true
}
return super.onOptionsItemSelected(item)
}