Android"资源$ NotFoundException:资源不是ColorStateList"使用Theme.AppCompat

时间:2016-02-15 08:30:59

标签: android android-studio

我使用的是Android Studio,我得到了一个" Resources $ NotFoundException"仅在Android前Lollipop上被抛出。这是:

Caused by: android.content.res.Resources$NotFoundException: Resource is not a ColorStateList (color or path): TypedValue{t=0x2/d=0x7f0100b7 a=2}

和' 0x7f0100b7 '在 R 文件中引用' colorAccent '。 我相信这个问题与appcompat支持库有关。 我已将其添加到' build.gradle'文件:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:support-v4:23.1.1'
    compile "com.google.android.gms:play-services-maps:8.4.0"
}

这是主题:

<style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/bg_main</item>
    <item name="colorPrimaryDark">@color/bg_main_darker</item>
    <item name="colorAccent">@color/bg_dark</item>
</style>

这些颜色存在于&#39; color.xml&#39;。

有什么想法吗? 非常感谢。

1 个答案:

答案 0 :(得分:2)

您正在使用特定于Material Design的属性,但在系统版本上运行,即先前的材质。

  

注意:如果您的应用使用了素材主题但未提供   以这种方式替代主题,您的应用程序将无法在版本上运行   Android早于5.0。

您必须提供一个替代主题,例如描述here,以运行早于5的版本。

E.g。在res/values/colors.xml中提供:

<!-- extend one of the Theme.AppCompat themes -->
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
    <!-- customize the color palette -->
    <item name="colorPrimary">@color/material_blue_500</item>
    <item name="colorPrimaryDark">@color/material_blue_700</item>
    <item name="colorAccent">@color/material_green_A200</item>
</style>

在您的问题文本中,您正在撰写color.xml而不是colors.xml,也可能是您问题的一部分:)