AndroidDev
AndroidDev

Reputation: 5555

onCreate crashing after converting from Java to Kotlin

I converted my Launcher Activity from Java to Kotlin and I'm getting a crash in onCreate() and I don't understand why it is crashing.

Java:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Kotlin:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

Call-stack:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.a.b.c/com.a.b.c.Authentication.AuthenticationActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                      at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                      at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                      at android.os.Looper.loop(Looper.java:148)
                                                                      at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                   Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
                                                                      at com.a.b.c.Activity.AppLifecycleTracker.onActivityCreated(AppLifecycleTracker.kt)
                                                                      at android.app.Application.dispatchActivityCreated(Application.java:195)
                                                                      at android.app.Activity.onCreate(Activity.java:922)
                                                                      at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:277)
                                                                      at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:85)
                                                                      at com.a.b.c.Authentication.AuthenticationActivity.onCreate(AuthenticationActivity.kt:147)
                                                                      at android.app.Activity.performCreate(Activity.java:6251)
                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                      at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                      at android.os.Looper.loop(Looper.java:148) 
                                                                      at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Upvotes: 1

Views: 1026

Answers (1)

Looks like the method onActivityCreated in AppLifecycleTracker has a parameter savedInstanceState: Bundle, which should be savedInstanceState: Bundle?, as there isn't necessarily a saved state available on activity creation, which means that the parameter value can be null. Kotlin checks this to ensure null safety.

The crash seems to be unrelated to the conversion of the Activity itself.

Upvotes: 4

Related Questions