在刚做项目之前,一直都没有了解过组件化,都是在单一的模块下使用,感觉使用简单,就没有留意那么多了,知道在公司做项目时,才发现,原来在组件化下的Library中不能使用butterknife了,经过一番折腾,终于可以使用了,自butterknife8.0之后就可以使用了,原因在于library下的资源文件中定义id不是final类型了,,,,下面直接介绍如何使用吧
第一步:在Project的build.gradle文件中添加
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
第二步:在各个module中的build.gradle添加
apply plugin: 'com.android.library' (在library中不用添加,本身就有)
apply plugin: 'com.jakewharton.butterknife' (在主项目中可以不添加)
在dependencies中添加
dependencies {
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
第三步:在主项目中,使用Butterknife直接用R来引用资源
在library项目中使用Butterknife使用R2来引用资源,如下
这是在library中使用
class ExampleActivity extends Activity {
@BindView(R2.id.user)
EditText username;
@BindView(R2.id.pass)
EditText password;
...
}
这是在主项目中使用
class ExampleActivity extends Activity {
@BindView(R.id.user)
EditText username;
@BindView(R.id.pass)
EditText password;
...
}