Only Safe(?.)or Non-null Asserted(!!.) Calls Are Allowed On A Nullable Receiver Of Type Menuitem
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 only safe(?.)or non-null asserted(!!.) calls are allowe
Solution 1:
The problem is item
is defined as nullable
. So you need to make sure that it should not be null
before using it.
overridefunonOptionsItemSelected(item: MenuItem?): Boolean {
if(item?.itemId==R.id.home){
var homeIntent= Intent(this,SignIn::class.java)
startActivity(homeIntent)
}
elseif(item?.itemId==R.id.sign_in){
var signInIntent= Intent(this,SignIn::class.java)
startActivity(signInIntent)
}
elseif(item?.itemId==R.id.close){
System.exit(0)
}
returnsuper.onOptionsItemSelected(item)
}
Or you can use let
overridefunonOptionsItemSelected(item: MenuItem?): Boolean {
item?.let {
if(it.itemId==R.id.home){
var homeIntent= Intent(this,SignIn::class.java)
startActivity(homeIntent)
}
elseif(it.itemId==R.id.sign_in){
var signInIntent= Intent(this,SignIn::class.java)
startActivity(signInIntent)
}
elseif(it?.itemId==R.id.close){
System.exit(0)
}
}
returnsuper.onOptionsItemSelected(item)
}
Solution 2:
The easiest way to avoid this is in such cases, is to add elvis operator at first line
item ?: returnfalse
But in this particular case, you can be sure, that item is not null by design, so you can safely remove question mark from method declaration
overridefunonOptionsItemSelected(item: MenuItem): Boolean {
Post a Comment for "Only Safe(?.)or Non-null Asserted(!!.) Calls Are Allowed On A Nullable Receiver Of Type Menuitem"