ButterKnife的配置步骤如下:
1、新建一个model(这个比较简单就不展示了)
2、model的配置
①在项目的build.gradle里面添加
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
如下图:
image.png
②、在model的build.gradle添加依赖:
implementation 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
这样就配置完成了,还有因为我使用的AS10.0的版本的,所以在配置的时候,如果遇到这种报错的话
image.png
解决办法如下:
检查项目和modle的build.gradle中是否存在如下代码
image.png
有的话,就删除掉就好了(因为android-apt插件与Android Gradle插件不兼容,所以才会报错)
好了,下面正式开始ButterKnife了
public class MainActivity extends AppCompatActivity {
@BindView(R.id.tv_text)//绑定控件
TextView textView;
@BindView(R.id.btn1)
Button btn1;
@BindView(R.id.btn2)
Button btn2;
@BindString(R.string.app_name)//绑定资源
String string;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
textView.setText(string);
btn1.setText("btn1");
btn2.setText("BTN2");
}
@OnClick({R.id.btn1,R.id.btn2})//绑定点击事件
public void btnClick(View view){
switch (view.getId()){
case R.id.btn1:
Toast.makeText(this,"Btn1 Cliked!",Toast.LENGTH_SHORT).show();
break;
case R.id.btn2:
Toast.makeText(this,"Btn2 Cliked!",Toast.LENGTH_SHORT).show();
break;
}
}
}
在这里说下两个坑:
1、相信很多小伙对于java的封装的概念很清晰了,而且还会保持良好习惯,添加private修饰符,但是在ButterKnife里面注释的时候,不能添加private或者static否则会报下面的错误提示
2、出现报错:
Static interface methods are only supported starting with Android N (--min-api 24): void butterknife.Unbinder.lambda0()
提示的意思是 最小api应为24才可以运行,但是实际应用App的时候,总不能只用在配置8.0以上的设备吧,于是有了下面的解决方案
在你运行的model的build.gradle中的android添加,就可以啦(实际上只是指定了jdk版本)
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
大功告成,但是温馨提示下,真的要多去官网查看,人家都说了这个东西已经弃用了,我居然还研究这么久,emmm毕竟kotlin大法都已经可以直接调用了
网友评论