在module中依赖butterknife,报错"attribute value must be constant"
如何在module中使用butterknife
在工程里新建了一个module,在该module依赖了butterknife,但是运行时报错"attribute value must be constant",去github官网上查了下,https://github.com/JakeWharton/butterknife。
原来如果在子模块中依赖的话,dependence需要修改,
在项目的工程gradle里添加
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.1'
}
在module的gradle顶部添加
apply plugin: 'com.jakewharton.butterknife'
最后别忘了rebuild project,然后在module中,把R.id都替换成R2.id。
在子模块中点击事件onClick无法工作
刚解决完在子模块中使用的问题,马上又踩入另一个坑,onClick无法工作,按常规写法
@OnClick({R2.id.btn_search, R2.id.btn_add, R2.id.btn_delete, R2.id.btn_update})
public void onViewClicked(View view) {
switch (view.getId()) {
case R2.id.btn_search:
break;
case R2.id.btn_add:
break;
case R2.id.btn_delete:
break;
case R2.id.btn_update:
break;
}
}
发现点击时无法进入到case里,打印后发现view.getId和R2.id对不上,非常神奇,但是无可奈何。
在github上找了半天,有不少类似案例 https://github.com/JakeWharton/butterknife/issues/762
均未找到合适的解决办法,最后不得已,把onViewClicked方法拆分成
@OnClick({R2.id.btn_search})
public void onSearchClicked(View view) {
}@OnClick({R2.id.btn_add})
public void onAddClicked(View view) {
}@OnClick({R2.id.btn_delete})
public void onDeleteClicked(View view) {
}@OnClick({R2.id.btn_update})
public void onUpdateClicked(View view) {
}
【在module中依赖butterknife,报错"attribute value must be constant"】至少可以跑通了。
推荐阅读
- 热闹中的孤独
- 你到家了吗
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 闲杂“细雨”
- 杜月笙的口才
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 赢在人生六项精进二阶Day3复盘
- 祖母走了