10

我正在尝试将 Butterknife 与一些 Kotlin 代码和 Java 代码一起使用。我知道在 M12 之前,对 ButterKnife 所需的注释处理的支持不好或不支持。所以我一直在 Java 中进行我的活动。它至少在 Java 中与 Butterknife 6.x 和 preM12 Kotlin 一起工作。我现在正在尝试使用 M13 和 M14 的黄油刀 7.x。它甚至应该支持注释处理,但它对我不起作用。 bind()函数不会绑定我的适配器中的任何东西,它是用 Java 编写的,也不会绑定在用 Kotlin 编写的活动中。

我在 build.gradle 中使用它(在 Github 上尝试了最新版本):

apply plugin: 'com.neenbedankt.android-apt'

dependencies {
   provided files('libs/butterknife-annotations.jar')
   kapt files('libs/butterknife-compiler-8.0.0-SNAPSHOT.jar')
   compile 'com.jakewharton:butterknife:8.0.0-SNAPSHOT@aar'
}

这不编译。我还尝试了“com.neenbedankt.android-apt”,它可以编译但绑定不起作用。

我知道黄油刀可能还不支持。但是有什么技巧可以让它工作吗?

4

2 回答 2

13

它确实适用于当前版本的 Kotlin (1.0.0-beta-3595),我建议您查看android-butterknife项目,该项目可以在 JetBrains 的kotlin-examples 存储库中找到。简而言之,您需要做的就是:

  1. 将以下内容添加到您的app/build.gradle文件中:

    kapt {
        generateStubs = true
    }
    
  2. 将以下行放在dependencies同一build.gradle文件的块中(假设您已经添加compile 'com.jakewharton:butterknife:7.0.1'到依赖项中):

    kapt 'com.jakewharton:butterknife:7.0.1'
    

应该就是这样。

于 2015-12-18T13:34:44.593 回答
3

支持黄油刀。使用 kapt: [1] , [2]

请注意,Butterknife 不支持私有 Java 字段,因此您可以使用lateinit修饰符将其设为公开。

此外,如果您使用 kapt, apply plugin: 'com.neenbedankt.android-apt' 则不再需要 line。

于 2015-10-26T11:32:28.963 回答