我正在尝试在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创建相关的方法时会遇到很多问题。

09-28 12:07