本文介绍了在MenuItem类型的可为空的接收器上仅允许安全(?.)或非null断言(!!.)调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试为android studio中的选项菜单项添加事件,但是当我使用item.itemId时出现此错误消息
i am trying to add event for option menu items in android studio but i am getting this error message when i use item.itemId
这是我的代码
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)
}
推荐答案
问题是item
定义为nullable
.因此,在使用它之前,请确保它不应该是null
.
The problem is item
is defined as nullable
. So you need to make sure that it should not be null
before using it.
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)
}
或者您可以使用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)
}
这篇关于在MenuItem类型的可为空的接收器上仅允许安全(?.)或非null断言(!!.)调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!