解决Android 异常 “Binary XML file line # : Error inflating class”

自己的项目在5.0及以上的手机山一直运行正常,可是当运行在低版本手机上时在一个Inflater.inflater()解析布局时出现了运行时异常“ Binary XML file line # : Error inflating class”宝宝当时就懵逼了。找了半天,依旧没发现问题所在了,没办法 只好去百度了好久。。发现http://blog.csdn.net/samuel__liu/article/details/53761683 这篇博客救了我啊,也怪自己粗心下面 我就借鉴一下人家的。勿怪。。。

而我根据提示的行数找到xml文件中发现该行是Button,最后通过查找资料发现问题是因为我的Button中设置了属性drawableTop,但是它引用在drawable-v21目录下才有,drawble目录下没有!将该资源值copy到drawble目录下就解决了问题~(心好塞。。。)

所以如果根据出错信息找到的是系统的View话可能的原因就是引用的资源没有放在合适的文件夹下。但这个问题应该更多的出现在自定义View时,如果是自定义的View,那么可能有下面几个原因:

1.XML中自定义view的标签使用错误。标签的格式应该是包名 + . + 类名。

2.自定义View时三个构造函数都要实现

View(Context context)     //Simple constructor to use when creating a view from code

View(Context context, AttributeSet attrs)     //Constructor that is called when inflating a view from XML

View(Context context, AttributeSet attrs, int defStyle)     //Perform inflation from XML and apply a class-specific base style

第一个是用来在代码中创建View使用,第二个和第三个是从xml中创建View时使用

3.编译的中间文件没有清理干净:日不你在原生系统代码的编译环境下编译APK之后,特别是修改了XML,出现标题所述现象,这个时候你只需要删除out目录下编译生成的中间文件夹即可(具体名字记不清了:在编译过程中,系统会将那个位置打印出来,通过串口来看吧,.../out/....../..../classes.dex,循着这个路径往前推到你的应用的project名字那一层文件夹),删除再重新make就OK了。

4.XML语法有隐蔽错误

例如 android:textSize="@style/Text.Mediumn"

你可能感兴趣的:(解决Android 异常 “Binary XML file line # : Error inflating class”)