0

私はAndroidプロジェクトでKotlinを試していました。私の活動にはネットワーク変更イベントのための放送受信機があります。コード以下の通りである:registerReceiver()はオーバーロードされたメソッドのエラーを表示します

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プラグインは私に次のエラーが表示されます。次の関数の

いずれも

enter image description here

最初の1のために指定された引数が正しいASAFIKで指定された引数で呼び出されないことができます。私はKotlinの専門家ではなく、ただ楽しみながら学んでいます。これはKotlinの意図した動作、プラグインのエラーですか、何か不足していますか?誰でも説明できますか?

答えて

2

最初にパラメータの名前はfilterで、intentFilterではありません。これを修正すると別のエラーが発生します。これは言う: "名前付き引数は、非Kotlin関数には許可されていません"この理由は、public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter)メソッドは、Androidからであり、Javaで書かれているということです。名前を削除するとうまくいくはずです:

registerReceiver(
      networkChangeReceiver, 
      IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION) 
    ) 
関連する問題