butterknife 8.5.1配置使用

来源:互联网 发布:debian与centos 编辑:程序博客网 时间:2024/06/05 02:29

butterknife github地址

1、在整个项目 build.gradle 文件下做如下配置

buildscript {  repositories {    mavenCentral()   }  dependencies {    classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'  }}

2、在当前module build.gradle 文件下做如下配置

apply plugin: 'com.jakewharton.butterknife'dependencies {  compile 'com.jakewharton:butterknife:8.5.1'  annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'}

3、使用示例

public class TestView extends AppCompatActivity {    @BindView(R.id.test_txt)    TextView testTxt;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ButterKnife.bind(this);        testTxt.setText("ButterKnife");    }}

4、使用butterknife插件,快速生成,AndroidStudio Setting -> Plugins -> 搜索Android ButterKnife Zelezny 然后重启Studio生效。
插件使用方式:光标移动到布局文件的位置,例如:setContentView(R.layout.activity_main);,鼠标放到activity_main上,快键键Alt + Insert,选择Generate ButterKnife Injections

5、在Library内部使用视图注入
正确配置gradle之后,依然报错 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference,ButterKnife应该在使用的module进行gradle配置,不能在依赖的library间接的使用

library 项目中使用butterknife时,R.id.tv,底下会有红线,提示“元素值必须为常量表达式”
原因:在一般的Android项目中,R类的常量都是用final定义的,但ADT 14之后,如果在library 项目中,它会没有final关键字,在这里要用R2替换R即可,为R2.id.tv

在 library 项目中,有多个onclick点击事件,不能使用case R.id.iv_back,与上面报一样的错误,原因也同上。在switch语句的case中,如果使用 R.id.xxx 则会提示有问题,不允许非常量在case语句中。AndroidStudio中,在switch上面按下Alt+Enter键有将Switch转换成if-else的选项。

本意在公共的library进行butterknife的gradle配置,然后程序入口的module依赖这个公共的library,从来达到不用每个module重复依赖的效果,可是失败,总是报空,必须各自依赖
记录完毕

1 0
原创粉丝点击