10

KotlinコードとJavaコードでButterknifeを使用しようとしています。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) で動作します。JetBrains のkotlin-examplesリポジトリ内にあるandroid-butterknifeプロジェクトを確認することをお勧めします。要するに、あなたがする必要があるのは次のとおりです。

  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 に答える