2015-10-05 8 views
9

Próbuję użyć Butterknife z kodem Kotlin i kodem Java. Wiem, że przed M12 było złe lub żadne wsparcie dla przetwarzania adnotacji wymaganego przez ButterKnife. Tak więc zachowałem swoje działania w Javie. Pracował przynajmniej w Javie z Butterknife 6.x i PreM12 Kotlin. Próbuję teraz maźnika 7.x z M13 i M14. Powinien mieć nawet obsługę przetwarzania adnotacji, ale to nie działa dla mnie. bind() Funkcja nie wiąże niczego w moim adapterze, który jest napisany w Javie ani w działalności napisanej w Kotlin.Czy narzędzie butterknife 7.x współpracuje z Kotlin M14?

używam tego w build.gradle (próbowałem najnowszą wersję na 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]' 
} 

nie skompilować. Próbowałem również "com.neenbedankt.android-apt", który kompiluje, ale wiążący nie działa.

Wiem, że prawdopodobnie nie ma jeszcze wsparcia w nożyka do masła. Ale czy jest jakiś hak, żeby to działało?

+5

JakeWharton osobno wypuścił KotterKnife, czy nie tego właśnie potrzebujesz? https://github.com/JakeWharton/kotterknife – Sharj

+6

Ewentualnie istnieją rozszerzenia Android firmy Kotlin. Nie ma potrzeby stosowania Butterknife. –

+0

Tak, wiem o tych opcjach. Idę z Anko. Ale dzięki za odpowiedź. –

Odpowiedz

13

To działa w obecnej wersji Kotlin (1.0.0-beta-3595), proponuję spojrzeć na projekt android-butterknife które można znaleźć wewnątrz JetBrains męska kotlin-examples repo. W skrócie wszystko, co trzeba zrobić, to:

  1. Dodaj poniższe linie do pliku app/build.gradle:

    kapt { 
        generateStubs = true 
    } 
    
  2. umieścić następującą linię wewnątrz bloku dependencies tego samego build.gradle pliku (zakładając, że już dodane compile 'com.jakewharton:butterknife:7.0.1' do zależnościami):

    kapt 'com.jakewharton:butterknife:7.0.1' 
    

A to powinno być to.

+0

Potwierdzono także stabilnym kotlin 1.0.0. –

+1

Od strony nokarza ziołowego 8.x, uruchamiasz 'kata' na kompilatorze lib zamiast drugiego odniesienia do samego noża, np.' Kapt 'com.jakewharton: butterknife-compiler: 8.0.1''. Przykładowy projekt JetBrains połączony z powyższą odpowiedzią został zaktualizowany, aby odzwierciedlić tę zmianę. –

3

Nóż jest obsługiwany. Użyj kapt: [1], [2].

Należy pamiętać, że narzędzie Butterknife nie obsługuje prywatnych pól Java, więc można użyć modyfikatora lateinit, aby upublicznić go.

Również, jeśli używasz kapt, apply plugin: 'com.neenbedankt.android-apt' linia nie jest już potrzebna.

+0

Jak zrobić zestaw Butterknife onClicks i itp. Z kapt? –

Powiązane problemy