java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x12

最近使用Android Studio开发一个新项目,刚做完几个界面,跑在android 5.0上面很正常,因为都是挺简单的布局,本以为应该不存在兼容性问题(Flag啊)。

偶然用了一个4.x的实机测试,发现杯具了,直接报错退出了,发现log里面打出这么一句:

java.lang.UnsupportedOperationException: Can't convert to color: type=0x2

难以理解啊,没办法一步一步调试吧。

顺便说一下调试要注意的问题,如果compileSdkVersion与实际出错的android版本不符合,是没法设置断点的。

改为一致之后,一步一步看,最后发现问题出在一个drawable xml文件上,之前是这么写的:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke
        android:width="0.5dp"
        android:color="?colorPrimary" />
</shape>

也是摸不着头脑,很正常啊。尝试一下吧?colorPrimary改成直接的color引用试一试吧。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke
        android:width="0.5dp"
        android:color="@color/carnation" />
</shape>

一运行,果然成功了。

看起来像是android4.x系统上因为某种原因,无法在drawable xml文件里面使用attr属性,5.x上没有这个问题。

希望对遇到类似

can't convert xxx type=0x00

问题的朋友有所启发和帮助。

如果有人能够告诉我具体原因,我也会十分感谢(果然android兼容是个大坑啊!

原文地址:https://www.cnblogs.com/DarkMaster/p/4581126.html