Development/Android

[Android - Kotlin] ResultReceiver 상속받을때 No value passed for parameter 'handler' 오류

Jamie 2019. 7. 23. 21:07
반응형

포스팅 날짜 : 2019-07-23

Android Studio 버전 : 3.4.2

 

Android에서 Kotlin을 이용하여 개발하는중에 Activity에서 Service로 데이터를 통신하고 싶었습니다.

그래서 ResultReceiver를 사용하여, 데이터를 Intent로 넘겨서 사용하려고 했는데, ResultReceiver를 상속받으니 다음과 같은 에러 메시지가 발견되었습니다.

 

 

작성한 Kotlin 코드는 다음과 같습니다.

 

class DataResultReceiver() : ResultReceiver() {

    override fun onReceiveResult(resultCode: Int, resultData: Bundle?) {
        super.onReceiveResult(resultCode, resultData)
    }
}

Java코드로는 다음과 같은 코드를 사용하고자 했습니다.

public class DataReceiver extends ResultReceiver {

    // Constructor
    public DataReceiver(Handler handler) {
        super(handler);
    }

    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {
        if (receiver != null) {
            receiver.onReceiveResult(resultCode, resultData);
        }
    }
}

위의 오류는 부모클래스인 ResultReceiver 클래스의 생성자 호출시

handler를 부모인 ResultReceiver에 전달해야되는데 작성한 Kotlin의 코드에는 없으므로 오류 메시지가 발생한것입니다.

 

(Java 코드에서는 super(handler)로 ResultReceiver로 전달합니다.)

 

생성자에 handler를 추가하였고, 부모클래스에게도 handler 객체를 입력해서 오류메시지를 해결했습니다.

class DataResultReceiver(handler : Handler) : ResultReceiver(handler) {

    override fun onReceiveResult(resultCode: Int, resultData: Bundle?) {
        super.onReceiveResult(resultCode, resultData)
    }
}

참고 URL 

반응형