IllegalArgumentException: savedInstanceState Specified as Non-Null is Null
up vote
16
down vote
favorite
I am getting a strange error when I start my MainActivity
:
06-16 16:01:05.193 2083-2083/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.example.github, PID: 2083
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.example.github/com.android.example.github.ui.MainActivity}: 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:2666)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
at com.android.example.github.injection.AppInjector$init$1.onActivityCreated(AppInjector.kt)
at android.app.Application.dispatchActivityCreated(Application.java:197)
at android.app.Activity.onCreate(Activity.java:961)
at android.support.v4.app.BaseFragmentActivityGingerbread.onCreate(BaseFragmentActivityGingerbread.java:54)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:319)
at com.android.example.github.ui.MainActivity.onCreate(MainActivity.kt:20)
at android.app.Activity.performCreate(Activity.java:6682)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
This is my MainActivity
class:
class MainActivity : LifecycleActivity(), HasSupportFragmentInjector {
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Fragment>
@Inject set
lateinit var navigationController: NavigationController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
if (savedInstanceState == null) {
navigationController.navigateToSearch()
}
}
override fun supportFragmentInjector(): AndroidInjector<Fragment> {
return dispatchingAndroidInjector
}
}
The error states that the parameter savedInstanceState
is null, when it is specified as non-null; but it is nullable (savedInstanceState: Bundle?
) and the onCreate()
method is marked as @Nullable
in the source.
I have not come across this error in any of my other Kotlin projects. I am using Kotlin version 1.1.2-5; and had the same error with 1.1.2-3.
android android-activity kotlin
add a comment |
up vote
16
down vote
favorite
I am getting a strange error when I start my MainActivity
:
06-16 16:01:05.193 2083-2083/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.example.github, PID: 2083
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.example.github/com.android.example.github.ui.MainActivity}: 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:2666)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
at com.android.example.github.injection.AppInjector$init$1.onActivityCreated(AppInjector.kt)
at android.app.Application.dispatchActivityCreated(Application.java:197)
at android.app.Activity.onCreate(Activity.java:961)
at android.support.v4.app.BaseFragmentActivityGingerbread.onCreate(BaseFragmentActivityGingerbread.java:54)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:319)
at com.android.example.github.ui.MainActivity.onCreate(MainActivity.kt:20)
at android.app.Activity.performCreate(Activity.java:6682)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
This is my MainActivity
class:
class MainActivity : LifecycleActivity(), HasSupportFragmentInjector {
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Fragment>
@Inject set
lateinit var navigationController: NavigationController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
if (savedInstanceState == null) {
navigationController.navigateToSearch()
}
}
override fun supportFragmentInjector(): AndroidInjector<Fragment> {
return dispatchingAndroidInjector
}
}
The error states that the parameter savedInstanceState
is null, when it is specified as non-null; but it is nullable (savedInstanceState: Bundle?
) and the onCreate()
method is marked as @Nullable
in the source.
I have not come across this error in any of my other Kotlin projects. I am using Kotlin version 1.1.2-5; and had the same error with 1.1.2-3.
android android-activity kotlin
I have same issue. what is the issue on AppInjector, can you suggest it
– Ramki Anba
Dec 27 '17 at 6:39
add a comment |
up vote
16
down vote
favorite
up vote
16
down vote
favorite
I am getting a strange error when I start my MainActivity
:
06-16 16:01:05.193 2083-2083/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.example.github, PID: 2083
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.example.github/com.android.example.github.ui.MainActivity}: 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:2666)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
at com.android.example.github.injection.AppInjector$init$1.onActivityCreated(AppInjector.kt)
at android.app.Application.dispatchActivityCreated(Application.java:197)
at android.app.Activity.onCreate(Activity.java:961)
at android.support.v4.app.BaseFragmentActivityGingerbread.onCreate(BaseFragmentActivityGingerbread.java:54)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:319)
at com.android.example.github.ui.MainActivity.onCreate(MainActivity.kt:20)
at android.app.Activity.performCreate(Activity.java:6682)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
This is my MainActivity
class:
class MainActivity : LifecycleActivity(), HasSupportFragmentInjector {
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Fragment>
@Inject set
lateinit var navigationController: NavigationController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
if (savedInstanceState == null) {
navigationController.navigateToSearch()
}
}
override fun supportFragmentInjector(): AndroidInjector<Fragment> {
return dispatchingAndroidInjector
}
}
The error states that the parameter savedInstanceState
is null, when it is specified as non-null; but it is nullable (savedInstanceState: Bundle?
) and the onCreate()
method is marked as @Nullable
in the source.
I have not come across this error in any of my other Kotlin projects. I am using Kotlin version 1.1.2-5; and had the same error with 1.1.2-3.
android android-activity kotlin
I am getting a strange error when I start my MainActivity
:
06-16 16:01:05.193 2083-2083/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.example.github, PID: 2083
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.example.github/com.android.example.github.ui.MainActivity}: 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:2666)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState
at com.android.example.github.injection.AppInjector$init$1.onActivityCreated(AppInjector.kt)
at android.app.Application.dispatchActivityCreated(Application.java:197)
at android.app.Activity.onCreate(Activity.java:961)
at android.support.v4.app.BaseFragmentActivityGingerbread.onCreate(BaseFragmentActivityGingerbread.java:54)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:319)
at com.android.example.github.ui.MainActivity.onCreate(MainActivity.kt:20)
at android.app.Activity.performCreate(Activity.java:6682)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
This is my MainActivity
class:
class MainActivity : LifecycleActivity(), HasSupportFragmentInjector {
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Fragment>
@Inject set
lateinit var navigationController: NavigationController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
if (savedInstanceState == null) {
navigationController.navigateToSearch()
}
}
override fun supportFragmentInjector(): AndroidInjector<Fragment> {
return dispatchingAndroidInjector
}
}
The error states that the parameter savedInstanceState
is null, when it is specified as non-null; but it is nullable (savedInstanceState: Bundle?
) and the onCreate()
method is marked as @Nullable
in the source.
I have not come across this error in any of my other Kotlin projects. I am using Kotlin version 1.1.2-5; and had the same error with 1.1.2-3.
android android-activity kotlin
android android-activity kotlin
asked Jun 16 '17 at 20:18
Bryan
7,40833784
7,40833784
I have same issue. what is the issue on AppInjector, can you suggest it
– Ramki Anba
Dec 27 '17 at 6:39
add a comment |
I have same issue. what is the issue on AppInjector, can you suggest it
– Ramki Anba
Dec 27 '17 at 6:39
I have same issue. what is the issue on AppInjector, can you suggest it
– Ramki Anba
Dec 27 '17 at 6:39
I have same issue. what is the issue on AppInjector, can you suggest it
– Ramki Anba
Dec 27 '17 at 6:39
add a comment |
4 Answers
4
active
oldest
votes
up vote
6
down vote
accepted
It seems like the issue isn't in the onCreate
method. Try looking at com.android.example.github.injection.AppInjector$init$1.onActivityCreated(AppInjector.kt)
. I can't tell if it's a generated class, but it should give you an idea of what to do next.
add a comment |
up vote
34
down vote
I had the exact same problem, you have to make nullable types here:
override fun onCreatePreferences(bundle: Bundle?, s: String?) {}
What if i can't able to change this definition? for ex. SDK library functions!
– Kishore Jethava
Dec 31 '17 at 12:48
2
Thanks! My DialogFragments (converted form java to Kotlin from Android Studio) were crashing and just a simple ? on the Bundle in theonCreateDialog(savedInstanceState: Bundle?): Dialog
fixed it!
– Lucas P.
Mar 8 at 22:59
Seems like this changes the signature of an inherited function. I confirmed it works though, no compiler errors. In what other ways can we change the signature of a function that we override?
– Michael Osofsky
May 21 at 17:49
add a comment |
up vote
5
down vote
The issue is in the AppInjector. I used the google GitHubBrowser sample like you did and ran into this same error. I copied the code over to my project and let Android Studio convert it to Kotlin. When it did this it didn't properly specify the nullability of the savedInstanceState
parameter which is what is causing the crash. Just make it optional like in the below code and it will work.
object AppInjector {
fun init(app: App) {
DaggerAppComponent.builder().application(app)
.build().inject(app)
app
.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
handleActivity(activity)
}
override fun onActivityStarted(activity: Activity) {
}
override fun onActivityResumed(activity: Activity) {
}
override fun onActivityPaused(activity: Activity) {
}
override fun onActivityStopped(activity: Activity) {
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
}
override fun onActivityDestroyed(activity: Activity) {
}
})
}
private fun handleActivity(activity: Activity) {
if (activity is HasSupportFragmentInjector) {
AndroidInjection.inject(activity)
}
(activity as? FragmentActivity)?.supportFragmentManager?.registerFragmentLifecycleCallbacks(
object : FragmentManager.FragmentLifecycleCallbacks() {
override fun onFragmentCreated(fm: FragmentManager?, f: Fragment?,
savedInstanceState: Bundle?) {
if (f is Injectable) {
AndroidSupportInjection.inject(f)
}
}
}, true)
}
}
my hero !. saved me hours of time. thanks
– j2emanue
Feb 10 at 13:13
add a comment |
up vote
1
down vote
As @mcassiano noted, it appears the issue isn't with your onCreate
method but actually onActivityCreated
. Two thoughts:
- Due to the fact that libraries and such are in transition, for now you may have to just manually override
onActivityCreated
in your fragment and explicitly mark the Bundle as nullable:(savedInstanceState: Bundle?)
. You shouldn't have to, but manually setting up the nullability may just help. - I notice that the crash goes all the way down to BaseFragmentActivityGingerbread - is this a result of using the LifecycleActivity? Or do you have other, older, out-of-date dependencies in your project?
add a comment |
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
6
down vote
accepted
It seems like the issue isn't in the onCreate
method. Try looking at com.android.example.github.injection.AppInjector$init$1.onActivityCreated(AppInjector.kt)
. I can't tell if it's a generated class, but it should give you an idea of what to do next.
add a comment |
up vote
6
down vote
accepted
It seems like the issue isn't in the onCreate
method. Try looking at com.android.example.github.injection.AppInjector$init$1.onActivityCreated(AppInjector.kt)
. I can't tell if it's a generated class, but it should give you an idea of what to do next.
add a comment |
up vote
6
down vote
accepted
up vote
6
down vote
accepted
It seems like the issue isn't in the onCreate
method. Try looking at com.android.example.github.injection.AppInjector$init$1.onActivityCreated(AppInjector.kt)
. I can't tell if it's a generated class, but it should give you an idea of what to do next.
It seems like the issue isn't in the onCreate
method. Try looking at com.android.example.github.injection.AppInjector$init$1.onActivityCreated(AppInjector.kt)
. I can't tell if it's a generated class, but it should give you an idea of what to do next.
answered Jun 16 '17 at 20:27
mcassiano
1856
1856
add a comment |
add a comment |
up vote
34
down vote
I had the exact same problem, you have to make nullable types here:
override fun onCreatePreferences(bundle: Bundle?, s: String?) {}
What if i can't able to change this definition? for ex. SDK library functions!
– Kishore Jethava
Dec 31 '17 at 12:48
2
Thanks! My DialogFragments (converted form java to Kotlin from Android Studio) were crashing and just a simple ? on the Bundle in theonCreateDialog(savedInstanceState: Bundle?): Dialog
fixed it!
– Lucas P.
Mar 8 at 22:59
Seems like this changes the signature of an inherited function. I confirmed it works though, no compiler errors. In what other ways can we change the signature of a function that we override?
– Michael Osofsky
May 21 at 17:49
add a comment |
up vote
34
down vote
I had the exact same problem, you have to make nullable types here:
override fun onCreatePreferences(bundle: Bundle?, s: String?) {}
What if i can't able to change this definition? for ex. SDK library functions!
– Kishore Jethava
Dec 31 '17 at 12:48
2
Thanks! My DialogFragments (converted form java to Kotlin from Android Studio) were crashing and just a simple ? on the Bundle in theonCreateDialog(savedInstanceState: Bundle?): Dialog
fixed it!
– Lucas P.
Mar 8 at 22:59
Seems like this changes the signature of an inherited function. I confirmed it works though, no compiler errors. In what other ways can we change the signature of a function that we override?
– Michael Osofsky
May 21 at 17:49
add a comment |
up vote
34
down vote
up vote
34
down vote
I had the exact same problem, you have to make nullable types here:
override fun onCreatePreferences(bundle: Bundle?, s: String?) {}
I had the exact same problem, you have to make nullable types here:
override fun onCreatePreferences(bundle: Bundle?, s: String?) {}
answered Jun 26 '17 at 22:02
lxknvlk
1,2611120
1,2611120
What if i can't able to change this definition? for ex. SDK library functions!
– Kishore Jethava
Dec 31 '17 at 12:48
2
Thanks! My DialogFragments (converted form java to Kotlin from Android Studio) were crashing and just a simple ? on the Bundle in theonCreateDialog(savedInstanceState: Bundle?): Dialog
fixed it!
– Lucas P.
Mar 8 at 22:59
Seems like this changes the signature of an inherited function. I confirmed it works though, no compiler errors. In what other ways can we change the signature of a function that we override?
– Michael Osofsky
May 21 at 17:49
add a comment |
What if i can't able to change this definition? for ex. SDK library functions!
– Kishore Jethava
Dec 31 '17 at 12:48
2
Thanks! My DialogFragments (converted form java to Kotlin from Android Studio) were crashing and just a simple ? on the Bundle in theonCreateDialog(savedInstanceState: Bundle?): Dialog
fixed it!
– Lucas P.
Mar 8 at 22:59
Seems like this changes the signature of an inherited function. I confirmed it works though, no compiler errors. In what other ways can we change the signature of a function that we override?
– Michael Osofsky
May 21 at 17:49
What if i can't able to change this definition? for ex. SDK library functions!
– Kishore Jethava
Dec 31 '17 at 12:48
What if i can't able to change this definition? for ex. SDK library functions!
– Kishore Jethava
Dec 31 '17 at 12:48
2
2
Thanks! My DialogFragments (converted form java to Kotlin from Android Studio) were crashing and just a simple ? on the Bundle in the
onCreateDialog(savedInstanceState: Bundle?): Dialog
fixed it!– Lucas P.
Mar 8 at 22:59
Thanks! My DialogFragments (converted form java to Kotlin from Android Studio) were crashing and just a simple ? on the Bundle in the
onCreateDialog(savedInstanceState: Bundle?): Dialog
fixed it!– Lucas P.
Mar 8 at 22:59
Seems like this changes the signature of an inherited function. I confirmed it works though, no compiler errors. In what other ways can we change the signature of a function that we override?
– Michael Osofsky
May 21 at 17:49
Seems like this changes the signature of an inherited function. I confirmed it works though, no compiler errors. In what other ways can we change the signature of a function that we override?
– Michael Osofsky
May 21 at 17:49
add a comment |
up vote
5
down vote
The issue is in the AppInjector. I used the google GitHubBrowser sample like you did and ran into this same error. I copied the code over to my project and let Android Studio convert it to Kotlin. When it did this it didn't properly specify the nullability of the savedInstanceState
parameter which is what is causing the crash. Just make it optional like in the below code and it will work.
object AppInjector {
fun init(app: App) {
DaggerAppComponent.builder().application(app)
.build().inject(app)
app
.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
handleActivity(activity)
}
override fun onActivityStarted(activity: Activity) {
}
override fun onActivityResumed(activity: Activity) {
}
override fun onActivityPaused(activity: Activity) {
}
override fun onActivityStopped(activity: Activity) {
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
}
override fun onActivityDestroyed(activity: Activity) {
}
})
}
private fun handleActivity(activity: Activity) {
if (activity is HasSupportFragmentInjector) {
AndroidInjection.inject(activity)
}
(activity as? FragmentActivity)?.supportFragmentManager?.registerFragmentLifecycleCallbacks(
object : FragmentManager.FragmentLifecycleCallbacks() {
override fun onFragmentCreated(fm: FragmentManager?, f: Fragment?,
savedInstanceState: Bundle?) {
if (f is Injectable) {
AndroidSupportInjection.inject(f)
}
}
}, true)
}
}
my hero !. saved me hours of time. thanks
– j2emanue
Feb 10 at 13:13
add a comment |
up vote
5
down vote
The issue is in the AppInjector. I used the google GitHubBrowser sample like you did and ran into this same error. I copied the code over to my project and let Android Studio convert it to Kotlin. When it did this it didn't properly specify the nullability of the savedInstanceState
parameter which is what is causing the crash. Just make it optional like in the below code and it will work.
object AppInjector {
fun init(app: App) {
DaggerAppComponent.builder().application(app)
.build().inject(app)
app
.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
handleActivity(activity)
}
override fun onActivityStarted(activity: Activity) {
}
override fun onActivityResumed(activity: Activity) {
}
override fun onActivityPaused(activity: Activity) {
}
override fun onActivityStopped(activity: Activity) {
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
}
override fun onActivityDestroyed(activity: Activity) {
}
})
}
private fun handleActivity(activity: Activity) {
if (activity is HasSupportFragmentInjector) {
AndroidInjection.inject(activity)
}
(activity as? FragmentActivity)?.supportFragmentManager?.registerFragmentLifecycleCallbacks(
object : FragmentManager.FragmentLifecycleCallbacks() {
override fun onFragmentCreated(fm: FragmentManager?, f: Fragment?,
savedInstanceState: Bundle?) {
if (f is Injectable) {
AndroidSupportInjection.inject(f)
}
}
}, true)
}
}
my hero !. saved me hours of time. thanks
– j2emanue
Feb 10 at 13:13
add a comment |
up vote
5
down vote
up vote
5
down vote
The issue is in the AppInjector. I used the google GitHubBrowser sample like you did and ran into this same error. I copied the code over to my project and let Android Studio convert it to Kotlin. When it did this it didn't properly specify the nullability of the savedInstanceState
parameter which is what is causing the crash. Just make it optional like in the below code and it will work.
object AppInjector {
fun init(app: App) {
DaggerAppComponent.builder().application(app)
.build().inject(app)
app
.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
handleActivity(activity)
}
override fun onActivityStarted(activity: Activity) {
}
override fun onActivityResumed(activity: Activity) {
}
override fun onActivityPaused(activity: Activity) {
}
override fun onActivityStopped(activity: Activity) {
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
}
override fun onActivityDestroyed(activity: Activity) {
}
})
}
private fun handleActivity(activity: Activity) {
if (activity is HasSupportFragmentInjector) {
AndroidInjection.inject(activity)
}
(activity as? FragmentActivity)?.supportFragmentManager?.registerFragmentLifecycleCallbacks(
object : FragmentManager.FragmentLifecycleCallbacks() {
override fun onFragmentCreated(fm: FragmentManager?, f: Fragment?,
savedInstanceState: Bundle?) {
if (f is Injectable) {
AndroidSupportInjection.inject(f)
}
}
}, true)
}
}
The issue is in the AppInjector. I used the google GitHubBrowser sample like you did and ran into this same error. I copied the code over to my project and let Android Studio convert it to Kotlin. When it did this it didn't properly specify the nullability of the savedInstanceState
parameter which is what is causing the crash. Just make it optional like in the below code and it will work.
object AppInjector {
fun init(app: App) {
DaggerAppComponent.builder().application(app)
.build().inject(app)
app
.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
handleActivity(activity)
}
override fun onActivityStarted(activity: Activity) {
}
override fun onActivityResumed(activity: Activity) {
}
override fun onActivityPaused(activity: Activity) {
}
override fun onActivityStopped(activity: Activity) {
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
}
override fun onActivityDestroyed(activity: Activity) {
}
})
}
private fun handleActivity(activity: Activity) {
if (activity is HasSupportFragmentInjector) {
AndroidInjection.inject(activity)
}
(activity as? FragmentActivity)?.supportFragmentManager?.registerFragmentLifecycleCallbacks(
object : FragmentManager.FragmentLifecycleCallbacks() {
override fun onFragmentCreated(fm: FragmentManager?, f: Fragment?,
savedInstanceState: Bundle?) {
if (f is Injectable) {
AndroidSupportInjection.inject(f)
}
}
}, true)
}
}
answered Jan 13 at 20:04
Chris
1,37011221
1,37011221
my hero !. saved me hours of time. thanks
– j2emanue
Feb 10 at 13:13
add a comment |
my hero !. saved me hours of time. thanks
– j2emanue
Feb 10 at 13:13
my hero !. saved me hours of time. thanks
– j2emanue
Feb 10 at 13:13
my hero !. saved me hours of time. thanks
– j2emanue
Feb 10 at 13:13
add a comment |
up vote
1
down vote
As @mcassiano noted, it appears the issue isn't with your onCreate
method but actually onActivityCreated
. Two thoughts:
- Due to the fact that libraries and such are in transition, for now you may have to just manually override
onActivityCreated
in your fragment and explicitly mark the Bundle as nullable:(savedInstanceState: Bundle?)
. You shouldn't have to, but manually setting up the nullability may just help. - I notice that the crash goes all the way down to BaseFragmentActivityGingerbread - is this a result of using the LifecycleActivity? Or do you have other, older, out-of-date dependencies in your project?
add a comment |
up vote
1
down vote
As @mcassiano noted, it appears the issue isn't with your onCreate
method but actually onActivityCreated
. Two thoughts:
- Due to the fact that libraries and such are in transition, for now you may have to just manually override
onActivityCreated
in your fragment and explicitly mark the Bundle as nullable:(savedInstanceState: Bundle?)
. You shouldn't have to, but manually setting up the nullability may just help. - I notice that the crash goes all the way down to BaseFragmentActivityGingerbread - is this a result of using the LifecycleActivity? Or do you have other, older, out-of-date dependencies in your project?
add a comment |
up vote
1
down vote
up vote
1
down vote
As @mcassiano noted, it appears the issue isn't with your onCreate
method but actually onActivityCreated
. Two thoughts:
- Due to the fact that libraries and such are in transition, for now you may have to just manually override
onActivityCreated
in your fragment and explicitly mark the Bundle as nullable:(savedInstanceState: Bundle?)
. You shouldn't have to, but manually setting up the nullability may just help. - I notice that the crash goes all the way down to BaseFragmentActivityGingerbread - is this a result of using the LifecycleActivity? Or do you have other, older, out-of-date dependencies in your project?
As @mcassiano noted, it appears the issue isn't with your onCreate
method but actually onActivityCreated
. Two thoughts:
- Due to the fact that libraries and such are in transition, for now you may have to just manually override
onActivityCreated
in your fragment and explicitly mark the Bundle as nullable:(savedInstanceState: Bundle?)
. You shouldn't have to, but manually setting up the nullability may just help. - I notice that the crash goes all the way down to BaseFragmentActivityGingerbread - is this a result of using the LifecycleActivity? Or do you have other, older, out-of-date dependencies in your project?
answered Jun 16 '17 at 22:14
creativedrewy
794
794
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f44597348%2fillegalargumentexception-savedinstancestate-specified-as-non-null-is-null%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I have same issue. what is the issue on AppInjector, can you suggest it
– Ramki Anba
Dec 27 '17 at 6:39