Kotlin重构如何兼容原先的ButterKnife、EventBus3.1

前言

如有以下情况,本节教程可能对你有帮助
1.如果原先项目用java写的,现在需要引入kotlin,这个时候你会碰到Java中的Butterknife点击事件失效了,以及EventBus3.1在编译期生成的索引文件找不到了。
2.如果整个工程都是Kotlin项目,你需要用到Butterknife的onClick功能或者EventBus事件总线。

环境以及工具

AndroidStudio3.1.4

效果展示

MainActivity.kt文件

   @BindView(R.id.ivLogo)
   lateinit var ivLogo: ImageView

   @OnClick(R.id.xxx)
    fun onViewClicked(view: View) {
        when (view.id) {
            R.id.tvForgotPassword -> {
            }
            R.id.tvCommit -> {
            }
            else -> {
            }
        }
    }

整体步骤

app build.gradle

用kotlin之前

dependencies {
    implementation "com.jakewharton:butterknife:8.8.1"
    annotationProcessor"com.jakewharton:butterknife-compiler:8.8.1"
    implementation "org.greenrobot:eventbus:3.1.1"
    annotationProcessor"org.greenrobot:eventbus-annotation-processor:3.1.1"
}

用kotlin之后

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
}

dependencies {
    implementation "com.jakewharton:butterknife:8.8.1"
    kapt "com.jakewharton:butterknife-compiler:8.8.1"
    implementation "org.greenrobot:eventbus:3.1.1"
    kapt "org.greenrobot:eventbus-annotation-processor:3.1.1"
}

问题解决了,就可以看看下面的原理

  • annotationProcessor 和 kapt有什么区别以及作用
    不重复造轮子,直接看别人写的,https://www.jianshu.com/p/472e66632ed0

请关注我(分享日常开发)

你可能感兴趣的:(Kotlin)