Landroid

Parameter specified as non-null is null 해결 본문

안드로이드

Parameter specified as non-null is null 해결

silso 2020. 10. 24. 18:07

사건전말

오늘도 평화롭게 코딩을 하고 있는 나에게 갑자기 뜬금없는 곳에서 에러가 발생했습니다.

 

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: 패키지명, PID: 7992
    java.lang.RuntimeException: Unable to start activity ComponentInfo{패키지명.Detail.View.DetailPostActivity}: java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter asset
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

 

java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter

 

갑자기 널포인트 예외? 테스트까지 거치면서 완벽하게 동작할 줄 알았던 코드에서 예외를 내뱉다니 헛웃음이 나네요.

 

 

 

 

그래서 어제 이것에 대해 삽질한 결과 아주 단순한 문제였습니다.

 

이게 생각보다 흔히 발생할 수 있는 오류일 것 같아서 블로그를 통해 작성하게 되었습니다.ㅎㅎ

 

일단 에러가 발생한 원인은 서버가 String이 아닌 NULL을 줘서 에러가 났던 것입니다.

저는 위와 같은 상황에서 발생했습니다.

 

1. asset에 String이 아닌 NULL이 들어감

2. 프래그먼트에서는 Parealable 클래스를 인텐트에 담고 다른 액티비티로 보냄

3. 액티비티에서 인텐트로부터 데이터를 받아옴

4. 받아온 데이터에서 문자열이 아닌 null이 담긴 asset 때문에 에러발생

5. asset 타입을 String에서 String?으로 변경

6. 해결

 

에러메시지를 잘 보면 마지막에 parameter asset이라고 적혀있습니다. 거기가 에러를 발생시킨 원인이기 때문에

사실 에러메시지를 잘 읽으면 해결될 수 있는 문제입니다. ^^

 

덕분에 8시간을 날리는 경험을 겪고 정신이 번쩍들게 만들었네요

 

Comments