解决android4.4的bug NoSuchMethodException View.onClick

Android 4.4版本 xml中的onClick属性不兼容support库。

用户反馈崩溃,用自己手机测试没有问题,在优测上找了一台相同版本的手机测试,还真找到了问题,View.onClick方法抛NoSuchMethod方法,当时就很奇怪,怎么会找不到onClick方法呢,我又去看了bugly上面的这个方法,搜索出来,全是android 4.4的手机。这里写图片描述
我仔细检查代码,崩溃的地方时使用了AppCompatCheckBox,,我并没有设置onClick方法,为什么会崩溃呢,仔细检查之后发现,是在xml中定义的style,引入了onClick属性,查看checkbox源码,checkbox在setCheck()之后会调用performClick(),调用onClick方法。在StackOverflow上找到原因,是xml中的onClick不兼容support库AppCompatButton android:onClick Could not find a method exception
以及这个bugtracker(https://issuetracker.google.com/issues/37108938)
最后去掉xml中的onClick属性,运行测试就没有问题了。
引用原话

I have found some explanation for this issue. It was filed as a bug. Here is the link to bug report. https://issuetracker.google.com/issues/37108938

In a gist, they say that the issue was fixed in API 24 and onClick is not compatible with support library. I have added a comment to the thread about kitkat issue.


感谢前辈们,努力前行!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值