2017年7月18日 星期二

[Android Kotlin]Kotlin與ButterKnife並存使用


由於Kotlin成為Android新一代的開發語言,所以最近也開始使用了Kotlin

然而在專案中常常會用到有名的奶油刀(ButterKnife)來幫助我們bind view

雖然在kotlin當中我們不需要再藉由ButterKnife來Bind view,
因為只要在專案中的gradle加上
 
apply plugin: 'kotlin-android-extensions'

Kotlin就可以自動幫我們從xml裡面找到view並且bind.

既然如此,那為何我還需要用到ButterKnife呢?

因為雖然Kotlin可以幫助我們BindView,但是ButterKnife除了BindView之外,他還有很多好用的Annotation可以使用

像是
 
    @OnClick(R.id.btn)
    fun onClick(view: View) {
        //do something
    }

這類好用的Annotation來幫助我們,但如果你使用了Kotlin之後,你會發現編譯通過,但ButterKnife似乎沒有作用了?

沒錯,因為Kotlin要用kapt,而不是原本的apt
所以我們需要在gradle中將ButterKnife改為
 
kapt {
    generateStubs = true
}
dependencies {
    compile("com.jakewharton:butterknife:$butterknife_version") {
        exclude group: 'com.android.support', module: 'support-annotations'
        exclude group: 'com.android.support', module: 'support-compat'
    }
    kapt "com.jakewharton:butterknife-compiler:$butterknife_version"
}


其中特別注意到butterknife_version需要一致,否則就會出問題哦!