我正在尝试为 android studio 中的选项菜单项添加事件,但是当我使用 item.itemId 时收到此错误消息
在 MenuItem 类型的可空接收器上只允许安全(?.)或非空断言(!!.)调用
这是我的代码
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
if(item.itemId==R.id.home){
var homeIntent= Intent(this,SignIn::class.java)
startActivity(homeIntent)
}
else if(item.itemId==R.id.sign_in){
var signInIntent= Intent(this,SignIn::class.java)
startActivity(signInIntent)
}
else if(item.itemId==R.id.close){
System.exit(0)
}
return super.onOptionsItemSelected(item)
}
Run Code Online (Sandbox Code Playgroud)
问题item被定义为nullable。所以你需要null在使用它之前确保它不应该是。
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
if(item?.itemId==R.id.home){
var homeIntent= Intent(this,SignIn::class.java)
startActivity(homeIntent)
}
else if(item?.itemId==R.id.sign_in){
var signInIntent= Intent(this,SignIn::class.java)
startActivity(signInIntent)
}
else if(item?.itemId==R.id.close){
System.exit(0)
}
return super.onOptionsItemSelected(item)
}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用 let
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
item?.let {
if(it.itemId==R.id.home){
var homeIntent= Intent(this,SignIn::class.java)
startActivity(homeIntent)
}
else if(it.itemId==R.id.sign_in){
var signInIntent= Intent(this,SignIn::class.java)
startActivity(signInIntent)
}
else if(it?.itemId==R.id.close){
System.exit(0)
}
}
return super.onOptionsItemSelected(item)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9845 次 |
| 最近记录: |