2015-10-05 55 views
9

我想用一些Kotlin代碼和Java代碼來使用Butterknife。我知道在M12之前,ButterKnife需要註釋處理的支持不好或不支持。所以我一直在Java中進行我的活動。它至少在Java中使用Butterknife 6.x和preM12 Kotlin。 我現在正在嘗試butterknife 7.x與M13和M14。它應該有註解處理支持,但它不適合我。 bind()函數不會綁定用Java編寫的適配器中的任何內容,也不會用Kotlin編寫的活動。butterknife 7.x和Kotlin M14一起工作嗎?

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

這並不編譯。我也試過'com.neenbedankt.android-apt',它編譯但綁定不起作用。

我知道那裏可能還不支持butterknife。但有沒有什麼破解讓它工作?

+5

傑克華頓已分別發佈KotterKnife,是不是你所需要的? https://github.com/JakeWharton/kotterknife – Sharj

+6

另外,還有Kotlin Android擴展。不需要Butterknife。 –

+0

是的,我知道這些選項。我要和安科一起去。但謝謝你的迴應。 –

回答

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

從butterknife 8.x開始,你現在在編譯器lib上運行'kapt',而不是第二次引用butterknife本身,即'kapt'com.jakewharton:butterknife-compiler:8.0.1''。 JetBrains上面答案中鏈接的示例項目已更新以反映此更改。 –

3

Butterknife支持。使用kapt:[1][2]

請注意,Butterknife不支持私有Java字段,因此您可以使用lateinit修飾符將其公開。

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

+0

如何使用kapt設置onClicks等Butterknife? –