ButterKnife简单使用(Android studio 4.1.1)
Posted zhangjin1120
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ButterKnife简单使用(Android studio 4.1.1)相关的知识,希望对你有一定的参考价值。
开发人员先在xml中写了id,只有又要在MainActivity中,再把id写一遍,还有逐个添加点击事件,比较麻烦。ButterKnife代码自动生成比较迅速。
- 下载安装
android ButterKnife Injections (Support Kotlin)
插件,不要安装Android ButterKnife Zelezny
,这个在2017年就停止更新了。我尝试用zelezny,没有效果。
- 新建项目,在project级别下的build.gradle文件下添加:
classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
,如下:buildscript { repositories { ... } dependencies { classpath "com.android.tools.build:gradle:4.1.1" classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1' //添加这一行 } }
- 同步一下,然后在app级别build.gradle中添加依赖:
implementation 'com.jakewharton:butterknife:10.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
- 注意,许多博客都说要添加:
apply plugin: 'com.jakewharton.butterknife'
,我测试了下,在Android studio 4.1.1上不需要加这个。另外,每一次修改build.gradle文件要及时同步,否则可能导致,下面的步骤进行不了。 - 写布局文件
activity_main.xml
,如下:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> <TextView android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> <TextView android:id="@+id/tv3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> </LinearLayout>
- 不用手写
ButterKnife.bind(this);
光标放在setContentView(R.layout.activity_main);
这行代码的activity_main中,单击右键,选择generate
,后续照着图做,如下:
- 最终生成的代码如下:
public class MainActivity extends AppCompatActivity {
@BindView(R.id.tv1)
TextView tv1;
@BindView(R.id.tv2)
TextView tv2;
@BindView(R.id.tv3)
TextView tv3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}
@OnClick({R.id.tv1, R.id.tv2, R.id.tv3})
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv1:
break;
case R.id.tv2:
break;
case R.id.tv3:
break;
}
}
}
- 验证下:自动生成的tv1能不能直接用?
tv1.setText("1");
tv2.setText("2");
tv3.setText("3");
跑起来,没有报错。
以上是关于ButterKnife简单使用(Android studio 4.1.1)的主要内容,如果未能解决你的问题,请参考以下文章