我试图在kotlin中创建一个简单的未绑定服务,但我无法做到。当我在Java中覆盖onBind()
方法时,我可以返回null
,但在kotlin中它表示我只允许返回IBinder
而不是IBinder?
,这意味着它不能null
。除了将MyService类重写为Java之外,有什么想法可以解决这个问题吗?
[求助]谢谢你们,伙计们!我可以将IBinder
改为IBinder?
。它有效!!
答案 0 :(得分:17)
正如Enrico所提到的,您可以将IBinder
的类型更改为IBinder?
,它仍将与界面匹配。
以下是一个例子:
override fun onBind(intent: Intent): IBinder? {
return null
}
通常,使用Android Studio覆盖Android方法时要小心。当系统实际上可以返回空引用时,它会生成非null类型。它会导致你真正不期望的运行时kotlin异常。
如果我没记错的话,在重载Fragment
类和与View
创建相关的方法时,我遇到了很多问题。