目录
- 1.前言
- 2.配置ButterKnife
- 3.Activity绑定ButterKnife
- 4.Fragment绑定ButterKnife
- 5.总结
1.前言
ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。
2.配置ButterKnife
(1) 工程根目录外层的build.gradle:
添加:classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3'
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.0"
//butterknife
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3'
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
(2)工程根目录app内层的build.gradle:
AndroidStudio版本不同,添加方式不同
方式一:id 'com.jakewharton.butterknife'
方式二:apply plugin: 'com.jakewharton.butterknife'
方式一:最顶端
//Android应用程序
apply plugin: 'com.android.application'
//butterknife
apply plugin: 'com.jakewharton.butterknife'
android {
compileSdk 31
...
...
}
方式二:最顶端
plugins {
//Android应用程序
id 'com.android.application'
//butterknife
id 'com.jakewharton.butterknife'
}
android {
compileSdk 31
...
...
}
(3)dependencies
implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
dependencies {
...
...
...
//butterknife
implementation 'com.jakewharton:butterknife:10.2.3'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
}
3.Activity绑定ButterKnife
说明:绑定使用ButterKnife.bind(this);必须在setContentView();之后绑定;且父类bind绑定后,子类不需要再bind
(1)创建Activity基类BaseActivity:
/**
* created by on 2021/8/11
* 描述:Activity基类
*
* @author ZSAndroid
* @create 2021-08-11-16:37
*/
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//绑定ButterKnife.必须在setContentView之后
ButterKnife.bind(this);
}
}
(2)LoginActivity继承BaseActivity时,不用再次ButterKnife.bind(this);绑定LoginActivity
/**
* created by on 2021/8/11
* 描述:
*
* @author ZSAndroid
* @create 2021-08-11-4:27
*/
public class LoginActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}
}
3.Fragment绑定ButterKnife
说明:在Fragment中必须在onDestroyView()中使用unbinder.unbind();做解绑操作。ButterKnife.bind(this,view);这里的this不能替换成getActivity()
/**
* created by on 2021/8/11
* 描述:Fragment基类
*
* @author ZSAndroid
* @create 2021-08-11-16:53
*/
public class BaseFragment extends Fragment {
private Unbinder unbinder;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
//返回一个Unbinder值(进行解绑),注意这里的this不能使用getActivity()
View view = inflater.inflate(R.layout.fragment_test, container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
/**
* onDestroyView中进行解绑操作
*/
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}
5.总结
仅自己学习记录,如有错误,敬请谅解~,谢谢~~~