安卓在进行模块化开发时,由于编译插件不合理,库模块中的R.id会被编译成非常量 而非常量是不能用于switch语句和ButterKnife的View注解中的 我们可以使用ButterKnife的编译插件生成一个R2类,来解决这个问题
在项目的gradle文件中加入以下代码
buildscript {
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:10.1.0'
}
}
在模块的gradle文件中加入以下代码
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
dependencies {
api 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
}
在代码中通过R2引用id
public static class Holder extends EasyHolder {
@BindView(R2.id.attach_viewer)
AttachViewer attachViewer;
@BindView(R2.id.bt_remove)
ImageView removeButton;
}