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

} 

나는 거기에 어떤 문제가 표시되지 않습니다. 하지만 내 코 틀린 플러그인은 나에게 다음과 같은 오류를 보여줍니다 다음과 같은 기능의

없음은

enter image description here

처음에 제공된 인수가 올 ASAFIK이다 지정된 인수로 호출 할 수 없습니다. 나는 Kotlin의 전문가가 아니며 단지 재미로 배우고 있습니다. 이것은 Kotlin의 의도 된 동작입니까, 플러그인의 오류입니까, 아니면 뭔가 빠졌습니까? 아무도 설명 할 수 있을까요?

답변

2

먼저 매개 변수의 이름은 filter이고 intentFilter이 아니며이 문제를 해결하면 다른 오류가 발생합니다. 어떤 말합니다 : "명명 된 인수는 비 Kotlin 함수에 허용되지 않습니다."이유는이 방법은 public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter)이 Android에서 제공되고 Java로 작성된 것입니다. 이름을 삭제해도 문제가 해결되지 않습니다.

registerReceiver(
      networkChangeReceiver, 
      IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION) 
    )