Binary XML file line #: Error inflating class android.widget.Button错误解决

今天调试了一下程序,跳转的时候出现了这样的错误


定位到具体代码,是Adapter inflate的时候出错的



之前完全是没问题的、、、看错误信息是布局错误,57行,而且是一个Button


Binary XML file line #: Error inflating class android.widget.Button错误解决_第1张图片


这一眼看上去还真是找不到错误,百度了一下,有说是因为id定义错误引起的,有说是自定义view的路径不全或是构造函数没有写完整引起的,显然我不属于这些情况。。。所以决定慢慢试一试,先把Button换成TextView试试。

Binary XML file line #: Error inflating class android.widget.Button错误解决_第2张图片


class变成了Unkown,看起来应该是属性出错,于是把这个View直接注释掉,运行成功。

不知道具体是哪个属性,经过尝试之后发现是这一句android:background="?attr/colorAccent"


而把这一句换成

android:background="@color/colorAccent"

就可以正常运行了。。仔细查一下,发现我在style里也把colorAccent定义了,Activity的theme也正确,toolbar的background也是使用的"?attr/colorPrimary",但是在这里就是无法找到colorAccent的值。在这里卡了很久,并且这里改了之后错误频频发生,不过有一天看Adapter的时候,发现自己LayoutInfalter的写法是这样的

inflater = LayoutInflater.from(context.getApplicationContext());

这里就是错误的原因了,因为担心内存泄漏把Activity的Context都改成Application的Context了,这里没注意也修改了。

这就涉及到Application context的作用范围的问题了,Application.context是不能用于Infater的

以下是Activity.Context和Application.Context的对比,图片来源于网络

Binary XML file line #: Error inflating class android.widget.Button错误解决_第3张图片

你可能感兴趣的:(android,xml,布局,inflating)