我试图为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)
}
问题是项
被定义为可空
。因此在使用它之前,您需要确保它不应为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)
}
或者您可以使用< code>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)
}
我得到了错误:
问题内容: 如何使用T-SQL更改表中的一个属性以允许为null(不为null-> null)?也许更改表? 问题答案:
主要内容:将值保存到空接口,从空接口获取值,空接口的值比较空接口是接口类型的特殊形式,空接口没有任何方法,因此任何类型都无须实现空接口。从实现的角度看,任何值都满足这个接口的需求。因此空接口类型可以保存任何值,也可以从空接口中取出原值。 提示 空接口类型类似于 C# 或 Java 语言中的 Object、C语言中的 void*、 C++ 中的 std::any。在泛型和模板出现前,空接口是一种非常灵活的数据抽象保存和使用的方法。 空接口的内部实现保存了对
问题内容: 如JDK文档中所指定,Hashtable不允许空键或值。HashMap允许一个null键和任意数量的null值。为什么是这样? 问题答案: Hashtable是较老的类,通常不鼓励使用Hashtable。也许他们看到了对null键的需求,更重要的是对null值的需求,并将其添加到HashMap实现中。 HashMap是较新的,并且具有更高级的功能,这些基本上只是对Hashtable功能
问题内容: 我正在学习接口,类型转换和带有指针接收器的方法。指针接收器方法背后的规则和术语使我感到困惑。让我展示我对一个程序的困惑。 这是我的Go程序。 这是输出。 如果删除最后注释的行,则会出现此错误。 如何修复该行代码,以便能够使用指针接收器调用该方法?请通过提出带有指针接收器的方法的概念来说明解决方案,以阐明为什么它不起作用。 问题答案: 您不能(在这种情况下,对于指针接收器是隐式的)获取表
番石榴的模式很棒,因为它有助于用null消除歧义。当链的第一部分可能不存在时,转换方法非常有助于创建空安全方法链,但当链的其他部分不存在时则不有用。 这个问题与Guava可选类型有关,当转换返回另一个可选时,它会问本质上相同的问题,但对于不同的用例,我认为这可能不是的预期用途(处理错误)。 考虑一个方法<代码>可选 在中间方法可能返回/的常见情况下,似乎没有一种优雅的方法来链接调用。例如,假设有一