registerReceiver()显示重载方法的错误

我在Android项目中尝试Kotlin。 我的活动中有一个广播接收器用于网络更改事件。 代码如下:

BaseActivity.kt

abstract class BaseActivity : AppCompatActivity() { private val networkChangeReceiver = NetworkChangeReceiver() override fun onStart() { super.onStart() registerReceiver( receiver = networkChangeReceiver, intentFilter = IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION) ) } override fun onStop() { super.onStop() unregisterReceiver(receiver = networkChangeReceiver) } } 

NetworkChangeReceiver.kt

 class NetworkChangeReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { Log.e("network changed") } } 

我没有看到任何问题。 但是,我的kotlin插件显示我以下错误:

下面的函数都不能用提供的参数来调用

在这里输入图像描述

提供的第一个参数是正确的ASAFIK。 我不是Kotlin的专家,只是为了好玩而学习。 这是Kotlin的预期行为,插件中的错误还是我错过了什么? 谁能解释一下?

首先,这个参数被命名为filter而不是intentFilter ,如果你改正了这个,你会得到另一个错误。 其中说:“命名参数不允许非Kotlin功能”的原因是,该方法public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter)是从Android和Java编写的。 删除名称应该可以正常工作:

 registerReceiver( networkChangeReceiver, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION) )