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

来源:互联网 发布:守望win10网络初始失败 编辑:程序博客网 时间:2024/05/17 08:42

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

http://img.blog.csdn.net/20160319092125333?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

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


<img src="http://img.blog.csdn.net/20160319092217772"/>

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


<img src="http://img.blog.csdn.net/20160319092307080" />


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

<img src="http://img.blog.csdn.net/20160319092649996"/>


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的对比,图片来源于网络

context

0 0
原创粉丝点击