前言
ButterKnife是控件注入框架铆农,可以幫助安卓開發(fā)者省去初始化控件的重復(fù)性工作牺氨,簡單快捷地初始化布局文件中的控件,極大地提升開發(fā)效率墩剖。
導(dǎo)入ButterKnife至項(xiàng)目中
在項(xiàng)目的build.gradle中添加依賴猴凹,然后同步項(xiàng)目,即可下載butterknife庫至項(xiàng)目中
dependencies {
? ? implementation fileTree(dir: 'libs', include: ['*.jar'])
? ? implementation 'com.android.support:appcompat-v7:25.2.0'
? ? //加入下面這兩行代碼
? ? implementation 'com.jakewharton:butterknife:8.8.1'
? ? annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
簡單使用butterknife初始化控件
1.創(chuàng)建一個android工程岭皂,布局如下?
2.在activity中的oncreate()方法里初始化butterknife框架?
注意初始化要放在setView()之后
@Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_butter_knife_test);
? ? ? ? ButterKnife.bind(this);
? ? }
3.查找TextView與Button
public class ButterKnifeTestActivity extends AppCompatActivity {
? ? //綁定控件郊霎,省去了寫findviewbyid的重復(fù)性操作
? ? @BindView(R.id.tv_test1)
? ? private TextView tvTest;
? ? @BindView(R.id.btn_test1)
? ? private Button btnTest;
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_butter_knife_test);
? ? ? ? ButterKnife.bind(this);
? ? }
}
4.測試控件是否被正確初始化
tvTest.setText("文本控件已被初始化");btnTest.setText("按鈕被初始化");
意思是控件不能被聲明為私有的或者是靜態(tài)的,看來butterknife框架是對控件聲明有限制的爷绘,將private去掉即可书劝。
? ? @BindView(R.id.tv_test1)
? TextView tvTest;
? ? @BindView(R.id.btn_test1)
? ? Button btnTest;
5.給按鈕設(shè)置點(diǎn)擊監(jiān)聽事件
@OnClick(R.id.btn_test1)
? ? public void onclick(View view){
? ? ? ? btnTest.setText("我被點(diǎn)擊了");
? ? ? ? tvTest.setText("天若有情天亦老");
? ? }
隨便寫一個方法进倍,參數(shù)可以放View也可以不放任何參數(shù),
在方法上一行注解OnClick即可綁定點(diǎn)擊事件购对,注意該方法必須不能為private或者是static的猾昆,與聲明時(shí)規(guī)則一致。
之前在主module中添加了butterknifte插件并構(gòu)建異常的解決方案骡苞。
第一步:
buildscript {
? ? repositories {
? ? ? ? jcenter()
? ? }
? ? dependencies {
? ? ? ? classpath 'com.android.tools.build:gradle:2.3.0'
? ? ? ? //刪除前文中所說在工程的build.gradle中引入的插件
? ? ? ? //classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
? ? }
}
allprojects {
? ? repositories {
? ? ? ? jcenter()
? ? }
}
第二步
apply plugin: 'com.android.application'
//在app.build刪除下面這段代碼
//apply plugin: 'com.jakewharton.butterknife'
第三步
將butterknife的依賴改為下述代碼
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'