github地址:github-butterknife
官网的方法怎么配都有坑。。。无语
正确姿势如下
Android library使用butterknife配置
在library配置butterknife8.4.0需要在项目gradle,主工程gradle、library的gradle中分别,如下:
1、项目gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // 添加的部分
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0' // 添加的部分
}
}
一、App主工程gradle配置:添加以下2段配置
1、添加插件
apply plugin: 'com.neenbedankt.android-apt'
2、添加引用
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
二、library的gradle配置:添加以下两段配置
1、添加插件
apply plugin: 'com.jakewharton.butterknife' //比主工程多了这个插件
apply plugin: 'com.neenbedankt.android-apt'
2、添加引用
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
每个library如果想使用butterknife使用,都要像第二点那样去添加配置 真他妈的蛋疼
可以写一个通用的common.gradle
然后只在通用common.gradle配置,所有的library都有了 不需要每个都单独去配置
library使用注意
然后如果library要使用butterknife, 需要使用每个library对应R2 每个library都会建立成一个R2文件
官方也有写明
看是否能正常使用。可以查看app或者每个library build出来的文件
至于8.4版本。可以换成最新版本(待验证,是测试了8.4版本)
使用参考:
Android Butterknife 8.4.0 使用方法总结
Android Butter Knife 框架——最好用的View注入
注意:
1.activity - 需要绑定在setContentView后面。否则查找不到资源
setContentView(R.layout.activity_butterknife);
ButterKnife.bind( this ) ;
2.fragment - 是否需要绑定 反绑定,
Unbinder unbinder ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = super.onCreateView(inflater, container, savedInstanceState);
unbinder = ButterKnife.bind(this, rootView);
return rootView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
3.自定义view - 只需要绑定对应的总布局就行
View view = inflate(context, getLayoutResId(), this);
ButterKnife.bind(view, this);
4.绑定的参数 不能定义 private类型
5.Android中ViewPager + Fragment使用ButterKnife注解时出现空指针NullPoint的情况