2015-10-05 12 views
9

私はいくつかのKotlinコードとJavaコードでButterknifeを使用しようとしています。私は、M12以前はButterKnifeが必要としていたアノテーション処理のサポートが悪い、またはサポートされていなかったことを知っています。だから私はJavaで自分の活動を続けてきました。少なくともJavaではButterknife 6.xとpreM12 Kotlinで動作していました。 私はM13とM14でバターナイフ7.xを試しています。注釈処理のサポートも必要ですが、それは私のためには機能しません。 bind()関数は、Javaで書かれたアダプタやKotlinで書かれたアクティビティをバインドしません。バットナイフ7.xはKotlin M14で動作しますか?

私は(Githubの上の最新版を試してみました)build.gradleでこれを使用しています:これはコンパイルされません

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:[email protected]' 
} 

。私も 'com.neenbedankt.android-apt'をコンパイルしましたが、バインディングは機能しませんでした。

これはまだバターナイフには対応していない可能性があります。しかし、それを稼働させるためのハックはありますか?

+5

JakeWhartonは別にKotterKnifeをリリースしましたが、それは必要なものではありませんか? https://github.com/JakeWharton/kotterknife – Sharj

+6

また、Kotlin Android拡張機能もあります。バターナイフは必要ありません。 –

+0

はい、私はこれらのオプションについて知っています。私はankoと一緒に行くよ。しかし、応答に感謝します。 –

答えて

13

現在のバージョンのKotlin(1.0.0-beta-3595)で動作しますので、android-butterknifeプロジェクトをご覧ください。このプロジェクトは、JetBrainsのkotlin-examplesレポにあります。要するに、すべてを行う必要がある:

  1. があなたのapp/build.gradleファイルに次の行を追加します

    kapt { 
        generateStubs = true 
    } 
    
  2. あなたはすでに追加仮定(同じbuild.gradleファイルのdependenciesブロック内の次の行を入れてくださいあなたの依存関係にcompile 'com.jakewharton:butterknife:7.0.1'):

    kapt 'com.jakewharton:butterknife:7.0.1' 
    

それはそれであるはずです。

+0

安定したkotlin 1.0.0でも確認されています。 –

+1

バターナイフ8.xからは、バッチナイフそのものへの第2の参照ではなく、コンパイラlibで 'kapt'を実行します。つまり、' kapt 'com.jakewharton:butterknife-compiler:8.0.1''です。上記の答えでリンクされているJetBrainsのサンプルプロジェクトは、この変更を反映するように更新されました。 –

3

バターナイフに対応しています。 kapt:[1][2]を使用してください。

ButterknifeはプライベートJavaフィールドをサポートしていないので、lateinit修飾子を使用して公開することができます。

また、kaptを使用する場合は、 apply plugin: 'com.neenbedankt.android-apt' 行はもう必要ありません。

+0

kaptでバターナイフをonclicksなどにする方法は? –

関連する問題