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) )