2016-08-01 3 views
7

내 Crashlytics에서이 오류를 발견했으며 Android Nougat의 미리보기 버전 사용자에게만 충돌이있는 것으로 보입니다.Android Nougat에서만 drawable 리소스 ID에서 ColorStateList를 찾을 수 없습니다.

시작시 응용 프로그램이 중단됩니다 (주 활동).

스택 트레이스 그것은 안드로이드 누가 보이는

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) 

는 더 이상 내 응용 프로그램에서 사용하고 시스템 색의 어떤 종류를 지원하지 않습니다? 하지만 정확히 어떻게 수정해야할지 모르겠습니다. 편집

그래서 내 R 파일에 ID 0x7f020057와 자원을 발견하고이 그것입니다 :

공공 정적 최종 INT background_splash_gradient = 0x7f020057;

나는 내가 그것을 사용하고 위치를 확인하고 여기있다 :

<style name="StartingWindowTheme" parent="AppTheme"> 
    <item name="android:windowBackground">@drawable/background_splash_gradient</item> 
    <item name="android:colorBackground">@drawable/background_splash_gradient</item> 
</style> 

그리고 이것은 background_splash_gradiend XML 파일입니다

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 

<gradient 
    android:angle="135" 
    android:endColor="#00d49e" 
    android:startColor="#00bcd4"/> 

</shape> 

난 아직도 왜 몰라 누가 (Nougat)에 문제를 일으키고 있습니다. "StartingWindowTheme"스타일을 제거해 보았는데 이제 응용 프로그램이 작동하지만 더 이상 충돌하지 않습니다. 하지만 그보다 더 좋은 해결책이 필요합니다. 2

편집 그래서이 줄을 제거하려고 :

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

을 그리고 그것은 작동합니다. 같은 android:colorBackground 것 같습니다. 이 문제는 상술 한 줄이므로

TEMPORARY FIX

만 누가에, I는 values-v24 폴더를 생성하고이 광고를 제거 하였다. 앱은 누갓 (Nougat)에서 작동하지만 더 나은 솔루션을 고맙게 생각합니다.

+0

'android.R.color'에서 무엇인가를 사용합니까? – EpicPandaForce

+0

흠, 실제로 확신 할 수 없습니다. 단지 "android.R.color"에 대한 글로벌 검색을 수행했지만 아무 것도 찾지 못했습니다. 이것이 문제라고 가정하면 해결책은 무엇입니까? – Guy

+0

사실, 네, XML에서 사용하고있는 것처럼 보입니다. "@android : color/transparent"를 사용하고 있습니다. – Guy

답변

2

문제점이 발생한 위치와 해결 방법을 찾았습니다. 여기에 해결책이 있습니다. 간단하게 설명하겠습니다.

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

당신이 XML에 colorBackground로 그릴 수 설정할 수 없습니다 밝혀, 그래서이 줄을 제거한 후 작동합니다

이 줄은 문제의 원인이되었다.

Nougat에서만 충돌 한 이유는 이전 버전에서 가능했기 때문입니다.

관련 문제