Tôi đã tìm thấy lỗi này trong Crashlytics của mình và có vẻ như nó chỉ gặp sự cố đối với người dùng có phiên bản xem trước của Android Nougat.Không thể tìm thấy ColorStateList từ ID tài nguyên có thể kéo chỉ trên Android Nougat
Trục trặc ứng dụng khi khởi động (Hoạt động chính).
stacktrace
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.domain/com.my.domain.activities.MainActivity}: android.content.res.Resources$NotFoundException: Can't find ColorStateList from drawable resource ID #0x7f020057
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by android.content.res.Resources$NotFoundException: Can't find ColorStateList from drawable resource ID #0x7f020057
at android.content.res.ResourcesImpl.loadColorStateList(ResourcesImpl.java:840)
at android.content.res.Resources.loadColorStateList(Resources.java:998)
at android.content.res.TypedArray.getColor(TypedArray.java:447)
at android.app.Activity.onApplyThemeResource(Activity.java:4039)
at android.view.ContextThemeWrapper.initializeTheme(ContextThemeWrapper.java:198)
at android.view.ContextThemeWrapper.setTheme(ContextThemeWrapper.java:140)
at android.app.Activity.setTheme(Activity.java:4009)
at android.support.v7.app.AppCompatActivity.setTheme(AppCompatActivity.java:90)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2592)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Dường như Android Nougat không còn hỗ trợ một số loại màu sắc hệ thống mà tôi đang sử dụng trong ứng dụng của tôi? Nhưng tôi không biết chính xác cách sửa nó.
Sửa
Vì vậy, tôi tìm thấy tài nguyên với ID 0x7f020057 trong tập tin R của tôi và đây là nó:
public static int thức background_splash_gradient = 0x7f020057;
Tôi đã kiểm tra nơi tôi đang sử dụng nó và ở đây nó là:
<style name="StartingWindowTheme" parent="AppTheme">
<item name="android:windowBackground">@drawable/background_splash_gradient</item>
<item name="android:colorBackground">@drawable/background_splash_gradient</item>
</style>
Và đây là background_splash_gradiend tập tin xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="135"
android:endColor="#00d49e"
android:startColor="#00bcd4"/>
</shape>
tôi vẫn không biết tại sao điều này đang gây ra sự cố về Nougat. Tôi đã thử xóa kiểu "StartingWindowTheme" và ứng dụng hiện hoạt động, nó không còn bị treo nữa. Nhưng tôi cần sửa chữa tốt hơn thế.
Chỉnh sửa 2
Vì vậy, tôi đã cố gắng để loại bỏ dòng này:
<item name="android:colorBackground">@drawable/background_splash_gradient</item>
Và nó hoạt động. Có vẻ như android:colorBackground
là vấn đề.
TẠM FIX
Kể từ khi vấn đề là trong dòng đề cập ở trên, chỉ có trên Nougat, tôi đã tạo ra một thư mục values-v24
và loại bỏ các dòng đó. Ứng dụng hoạt động trên Nougat bây giờ, nhưng tôi sẽ đánh giá cao một giải pháp tốt hơn.
bạn có sử dụng bất cứ thứ gì từ 'android.R.color' không? – EpicPandaForce
Hm, tôi thực sự không chắc chắn, tôi đã thực hiện tìm kiếm toàn cầu cho "android.R.color" và nó không tìm thấy bất cứ điều gì. Giả sử rằng đây là vấn đề, giải pháp là gì? – Guy
Trên thực tế, có, có vẻ như tôi đang sử dụng nó trong xml. Tôi đang sử dụng "@android: color/transparent" – Guy