几天我与错误混淆引起: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>
如果有人遇到同样的问题,我想知道我是如何解决这个问题的。 谢谢你的帮助。
答案 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>