将java更改为kotlin代码后,ButterKnife点击注释无法正常工作。
@OnClick(R.id.btnlogin)
internal fun onLogin() {
if (isValid) {
getLoginAPi()
}
}
答案 0 :(得分:2)
你检查过你是否正确连接了ButterKnife? 你应该在build.gradle中使用这些行:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
//... other stuff
kapt {
generateStubs = true
}
dependencies {
compile 'com.jakewharton:butterknife:8.6.0'
kapt 'com.jakewharton:butterknife:8.6.0'
}
答案 1 :(得分:1)
代码存在一些可能的问题 但是,让我们首先开始正确设置Butterknife
确保您拥有以下
顶级build.gradle文件
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha7'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "com.jakewharton:butterknife-gradle-plugin:8.6.0"
}
应用程序级build.gradle文件
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
...
dependencies{
compile 'com.jakewharton:butterknife:8.6.0'
kapt 'com.jakewharton:butterknife-compiler:8.6.0'
}
完成此操作后,请确保您需要访问的刀具是公开的,因此请将功能更改为
@OnClick(R.id.btnlogin)
fun onLogin() {
if (isValid) {
getLoginAPi()
}
}
对于@BindView,请确保您具有以下语法
@BindView(R.id.editTextKg) @JvmField
var editTextKg: EditText? = null
这样可行,因为Kotlin中的默认可见性是公开的
@Gaket在他的代码中提到的Gnerating存根也被大多数人推荐,但是对我来说没有它的作用
答案 2 :(得分:0)
您应该检查您的依赖项,更具体地说,您应该使用kapt
作为注释处理器:
dependencies {
...
compile 'com.jakewharton:butterknife:8.6.0'
kapt 'com.jakewharton:butterknife-compiler:8.6.0'
}