我正在尝试在Kotlin中创建一个简单的未绑定(bind)服务,但我不能。当我在Java中重写onBind()
方法时,我可以返回null
,但是在kotlin中,它说我只允许返回IBinder
而不是IBinder?
,这意味着它不能是null
。除了将MyService类重写为Java以外,是否有其他解决方法?
[已解决]谢谢大家!我真的可以将IBinder
更改为IBinder?
。有用!!
最佳答案
正如Enrico所提到的,您可以将IBinder
的类型更改为IBinder?
,它将仍然与接口(interface)匹配。
下面是一个示例:
override fun onBind(intent: Intent): IBinder? {
return null
}
通常,使用Android Studio覆盖Android方法时要小心。真正的问题是当系统实际上可以返回空引用时,它生成非空类型。它会导致您确实没有想到的运行时Kotlin异常。
如果我没记错的话,重载
Fragment
类和与View
创建相关的方法时会遇到很多问题。