美文网首页
ButterKnife使用

ButterKnife使用

作者: jeffrey12138 | 来源:发表于2020-08-28 10:58 被阅读0次

    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否则会报下面的错误提示

    image.png /
    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大法都已经可以直接调用了

    相关文章

      网友评论

          本文标题:ButterKnife使用

          本文链接:https://www.haomeiwen.com/subject/dscadktx.html