2016-07-20 2 views
12

kotlin에서 간단한 언 바운드 서비스를 만들려고하지만 할 수 없습니다. Java에서 onBind() 메서드를 재정의 할 때 null을 반환 할 수 있지만 kotlin에서는 IBinder이 아닌 IBinder?이 아닌 null을 반환 할 수 있다고 말합니다. MyService 클래스를 Java로 다시 작성하는 것을 제외하고 어떤 문제를 해결할 수 있습니까?Kotlin에서 언 바운드 서비스 만들기

[SOLVED] 감사합니다. 나는 IBinderIBinder?으로 바꿀 수 있습니다. 그것은 작동!

+4

어떤 kotlin 버전을 사용하고 있습니까? 1.0.3을 사용하여 서비스를 변환 할 때 메서드 서명이'onBind (intent : Intent) : IBinder? '가되었고 Android Studio에서 오버라이드를 생성하면 onBind (intent : Intent?) : IBinder'를 재정의했습니다. 나는 그것을 'IBinder?'로 바꿀 수있었습니다. – Enrico

답변

11

Enrico가 언급 한대로 IBinderIBinder?으로 변경할 수 있으며 인터페이스와 여전히 일치합니다.

일반적으로 Android Studio를 사용하여 Android 메소드를 재정의 할 때는주의해야합니다. 실제 문제는 시스템이 실제로 null 참조를 리턴 할 수있을 때 널이 아닌 유형을 생성 할 때 발생합니다. 그것은 당신이 정말로 기대하지 않는 런타임 kotlin 예외를 발생시킵니다.

정확하게 기억한다면 Fragment 클래스에 오버로드하면 View과 관련된 많은 문제가 발생했습니다.