在Android Studio项目中配置使用ButterKnife
本文介绍使用的as版本为3.6.1,ButterKnife版本为10.0.0
1.首先在app的build.gradle文件中 dependencies里面添加
dependencies {
//添加butterKnife的依赖
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}
2. 在app的build.gralde文件中,在android下指定jdk的版本。
//指定jdk的版本
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
3.通过as下载Android ButterKnife Zelezny插件
File-->setting-->plugins (这里我遇到过一直加载不出来,网络特别慢的情况,我就尝试了好几次,然后进来没有在输入框输入这个插件,一直等插件列表加载完,挑选自己需要的插件安装的。不成功的情况可以多试试几次,或者可以尝试找梯子。我的就是试了好几次成功的) 安装成功后,重启android studio
尝试几次还是安装不行可参考文件https://blog.csdn.net/wwq614003946wwq/article/details/80625971
4.代码中如何使用,举例。MainActivity 中的布局文件。
在Activity的onCreate方法中。setContentView(R.layout.activity_main); 鼠标放在放在R.layout.activity_main布局文件的位置
右键layout->点击Generate->Generate ButterKnife Injections就可以了。会自动绑定控件id,自动加了ButterKnife.bind(this);activity与布局文件建立了绑定。
一般ButterKnife.bind()得到的UnBinder对象。平常写法都是拿到这个对象,全局定义一下,然后在onDestory方法中进行解绑。代码如下。
private Unbinder unbinder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
unbinder = ButterKnife.bind(this);
}
@Override
protected void onDestroy() {
unbinder.unbind();
super.onDestroy();
}
}
fragment依旧如此。 fragment进行绑定的代码是
ButterKnife.bind(this, contactsLayout);
private Unbinder mUnbinder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
context = getActivity();
View contactsLayout = inflater.inflate(
R.layout.fragment_maintab4_layout, container, false);
mUnbinder = ButterKnife.bind(this, contactsLayout);
initView(contactsLayout);
}
总结:
*** 上面的步骤一添加依赖的时候
最好用10.0.0版本。我之前用的是8.8.1版本的,然后当安装了Android ButterKnife Zelezny插件后就报错。
The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.
*** 报错信息。Static interface methods are only supported starting with Android N (--min-api 24): void butterknife.Unbinder.lambda$static$0()
这个错误就是需要添加jdk的依赖。就需要做上面的步骤二,