错误android.view.InflateException:二进制XML:错误膨胀类由xml背景引起的按钮

时间:2016-04-21 07:23:37

标签: java android xml android-layout

几天我与错误混淆引起:android.view.InflateException:二进制XML文件行#46:错误膨胀类Button,我试图找出发生了什么但没有运气,我在stackoverflow中找到了类似的问题但我认为我的情况有点不同,

FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo
android.view.InflateException: Binary XML file line #46: Error inflating class Button
Caused by: android.content.res.Resources$NotFoundException: 
**File res/drawable/btn_primary.xml from drawable resource ID #0x7f020058**

然后我意识到,我的文件btn_primary_dark.xml和另一个可绘制的xml导致了这个错误,一切正常在Lollipop上运行,但不是在21之前的API像kitkat或JB ,,在堆栈跟踪写入未找到资源但我有我的xml文件,我有drawable文件夹

上的文件
btn_primary.xml
btn_primary_dark.xml
btn_light.xml
..

和文件夹drawable-v21

btn_primary.xml
btn_primary_dark.xml
btn_light.xml
..
btn_primary.xml文件夹

中的

drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <corners android:radius="3dip" />
            <solid android:color="?colorControlHighlight" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="3dip" />
            <solid android:color="@color/primary" />
        </shape>
    </item>
</selector>
btn_primary.xml文件夹

中的

drawable-v21

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?colorControlHighlight">
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="3dip" />
            <solid android:color="@color/primary" />
        </shape>
    </item>
</ripple>

如果有人遇到同样的问题,我想知道我是如何解决这个问题的。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

我找出了一些东西,结果是错误,因为xml pre lollipop无法识别<solid android:color="?colorControlHighlight" />所以我只是改为<solid android:color="@color/accent" />

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <corners android:radius="3dip" />
            <solid android:color="@color/accent" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="3dip" />
            <solid android:color="@color/primary" />
        </shape>
    </item>
</selector>