美文网首页
Kotlin中使用ButterKnife,注解@BindView

Kotlin中使用ButterKnife,注解@BindView

作者: 追风之猪 | 来源:发表于2019-05-29 16:13 被阅读0次

    习惯使用了java,那么正常情况下我们集成ButterKnife如下:

    第一步:

    android {

      // Butterknife requires Java 8.

      compileOptions {

        sourceCompatibility JavaVersion.VERSION_1_8

        targetCompatibility JavaVersion.VERSION_1_8

      }

    }

    dependencies {

      implementation 'com.jakewharton:butterknife:10.1.0'

      annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'

    }

    第二步:

    buildscript {

      repositories {

        mavenCentral()

        google()

       }

      dependencies {

        classpath 'com.jakewharton:butterknife-gradle-plugin:10.1.0'

      }

    }

    第三步:

    apply plugin: 'com.android.library'

    apply plugin: 'com.jakewharton.butterknife'

    然后我们就可以正常的代码中使用了,如下所示:

    class Main2Activity extends Activity {

      @BindView(R2.id.user)EditText username;

      @BindView(R2.id.pass)EditText password;

    @OnClick(R.id.button)

    fun changeText(){

    textView.setText("test kotlin")

    }

    ...

    }

    但是,但是,注意了:当我们在kotlin中使用ButterKnife时,你会发现如上配置是有问题的

    我们知道,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class

    按以上步骤,在kotlin中使用Butterknife,你会发现压根没有对应的class生成

    Butterknife会为每一个类生成一个  classname_ViewBinding 的类,而事实上以下的配置并没有生成这个类,自然所有的注解绑定操作都不会生效的.那么我们可以确定一定是在编译期出现问题.

    事实也是如此,kotlin有自己的注解处理器 kapt,在 Kotlin 中添加依赖与 Java 中类似,仅需要使用 Kotlin 注解处理工具(Kotlin Annotation processing tool,kapt)替代 annotationProcessor 即可

    我们只需对如上配置稍做修改:

    第三步中添加:

    applyplugin:'kotlin-kapt'

    第一步中:将

    dependencies {

      implementation 'com.jakewharton:butterknife:10.1.0'

      annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'

    }改为:

    dependencies {

      implementation  'com.jakewharton:butterknife:10.1.0'

      kapt  'com.jakewharton:butterknife-compiler:10.1.0'

    }

    由此,所有注解生效,问题解决,一个很简单的问题

    相关文章

      网友评论

          本文标题:Kotlin中使用ButterKnife,注解@BindView

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