ButterKnife使用详解

前言

ButterKnife是控件注入框架,可以帮助安卓开发者省去初始化控件的重复性工作,简单快捷地初始化布局文件中的控件,极大地提升开发效率。

导入ButterKnife至项目中

在项目的build.gradle中添加依赖,然后同步项目,即可下载butterknife库至项目中

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.创建一个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的重复性操作

    @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("按钮被初始化");


意思是控件不能被声明为私有的或者是静态的,看来butterknife框架是对控件声明有限制的,将private去掉即可。

    @BindView(R.id.tv_test1)

  TextView tvTest;

    @BindView(R.id.btn_test1)

    Button btnTest;

5.给按钮设置点击监听事件

@OnClick(R.id.btn_test1)

    public void onclick(View view){

        btnTest.setText("我被点击了");

        tvTest.setText("天若有情天亦老");

    }


随便写一个方法,参数可以放View也可以不放任何参数,

在方法上一行注解OnClick即可绑定点击事件,注意该方法必须不能为private或者是static的,与声明时规则一致。

之前在主module中添加了butterknifte插件并构建异常的解决方案。

第一步:

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'

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容