前言
如有以下情况,本节教程可能对你有帮助
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重构系列分享教程
Kotlin环境搭建
Kotlin重构如何兼容原先的ButterKnife、EventBus3.1
请关注我(分享日常开发)
![](https://img.haomeiwen.com/i3376017/83908272f82196f8.jpg)
网友评论