ButtonKnife在library中引用“Attribute value must be constant”报错解决

最近在搞项目组件化的事,按业务分成独立的module,在release的时候就要把业务module设置成library,但是发现设置成library时候原先的buttonknife绑定view的代码全部标红下划线,提示“Attribute value must be constant”,这是因为library中R.id.xxx 取R中变量的时候并非是final类型,“duang”尼玛。这是要把以前的@BInd全部改成findviewbyid吗。吓老子一跳,结果肯定是没有啊。网上也有解决办法,但是好像都写得不全或者不清晰。下面来说说解决办法,3步保你成功:

ButterKnife在8.2.1中支持在Library内部使用视图注入,由于我的版本还是7.0的,所以赶紧升级版本。
1 在项目及的gradle的dependencies中如下添加:

dependencies {
 classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
 classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
 }

2 在appmodule和library中添加(注:只要用到都要添加)

apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'android-apt'

dependencies {
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0' 
}

3 在library绑定view如下(用R2代替R):

@BindView(R2.tv_account)  TextView tvAccount;

此处如果会提示“程序包R2不存在”,多rebuild几遍就行了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值