Can't find ColorStateList from drawable resource ID only on Android Nougat -


i have found error in crashlytics, , seems it's crashing users preview version of android nougat.

app crashes on startup (main activity).

stacktrace

fatal exception: java.lang.runtimeexception: unable start activity componentinfo{com.my.domain/com.my.domain.activities.mainactivity}: android.content.res.resources$notfoundexception: can't find colorstatelist drawable resource id #0x7f020057    @ android.app.activitythread.performlaunchactivity(activitythread.java:2646)    @ android.app.activitythread.handlelaunchactivity(activitythread.java:2707)    @ android.app.activitythread.-wrap12(activitythread.java)    @ android.app.activitythread$h.handlemessage(activitythread.java:1460)    @ android.os.handler.dispatchmessage(handler.java:102)    @ android.os.looper.loop(looper.java:154)    @ android.app.activitythread.main(activitythread.java:6077)    @ java.lang.reflect.method.invoke(method.java)    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:865)    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:755) caused android.content.res.resources$notfoundexception: can't find colorstatelist drawable resource id #0x7f020057    @ android.content.res.resourcesimpl.loadcolorstatelist(resourcesimpl.java:840)    @ android.content.res.resources.loadcolorstatelist(resources.java:998)    @ android.content.res.typedarray.getcolor(typedarray.java:447)    @ android.app.activity.onapplythemeresource(activity.java:4039)    @ android.view.contextthemewrapper.initializetheme(contextthemewrapper.java:198)    @ android.view.contextthemewrapper.settheme(contextthemewrapper.java:140)    @ android.app.activity.settheme(activity.java:4009)    @ android.support.v7.app.appcompatactivity.settheme(appcompatactivity.java:90)    @ android.app.activitythread.performlaunchactivity(activitythread.java:2592)    @ android.app.activitythread.handlelaunchactivity(activitythread.java:2707)    @ android.app.activitythread.-wrap12(activitythread.java)    @ android.app.activitythread$h.handlemessage(activitythread.java:1460)    @ android.os.handler.dispatchmessage(handler.java:102)    @ android.os.looper.loop(looper.java:154)    @ android.app.activitythread.main(activitythread.java:6077)    @ java.lang.reflect.method.invoke(method.java)    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:865)    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:755) 

it looks android nougat no longer supports kind of system colors i'm using in app? don't know how fix it.

edit

so found resource id 0x7f020057 in r file , it:

public static final int background_splash_gradient=0x7f020057;

i checked using , here is:

<style name="startingwindowtheme" parent="apptheme">     <item name="android:windowbackground">@drawable/background_splash_gradient</item>     <item name="android:colorbackground">@drawable/background_splash_gradient</item> </style> 

and background_splash_gradiend xml file:

<shape xmlns:android="http://schemas.android.com/apk/res/android">  <gradient     android:angle="135"     android:endcolor="#00d49e"     android:startcolor="#00bcd4"/>  </shape> 

i still don't know why causing issues on nougat. tried removing "startingwindowtheme" style , app works, no longer crashes. need better fix that.

edit 2

so tried remove line:

<item name="android:colorbackground">@drawable/background_splash_gradient</item> 

and works. seems android:colorbackground issue.

temporary fix

since problem in line mentioned above, on nougat, have created values-v24 folder , removed line there. app works on nougat now, appreciate better solution.

i found problem , how fix it. here's solution, i'll keep simple.

this line causing problem:

<item name="android:colorbackground">@drawable/background_splash_gradient</item> 

turns out can't set drawable colorbackground in xml, works after removing line.

the reason crashed on nougat because possible in earlier versions.


Comments