2015-10-05 17 views
9

Sto provando a usare Butterknife con codice Kotlin e anche codice Java. So che prima di M12 c'era un cattivo o nessun supporto per l'elaborazione delle annotazioni richiesta da ButterKnife. Quindi ho mantenuto le mie attività in Java. Funzionava almeno in Java con Butterknife 6.x e preM12 Kotlin. Sto provando ora Butterknife 7.x con M13 e M14. Dovrebbe avere anche il supporto per l'elaborazione delle annotazioni, ma non funziona per me. La funzione bind() non associa nulla nel mio adattatore scritto in Java né in attività scritte in Kotlin.Il butterknife 7.x funziona con Kotlin M14?

Sto usando questo in build.gradle (provato la versione più recente su 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]' 
} 

Questo non può essere compilato. Ho provato anche 'com.neenbedankt.android-apt' che compila ma il binding non funziona.

So che probabilmente non c'è ancora il supporto per il coltello . Ma c'è qualche trucco per farlo funzionare?

+5

JakeWharton ha rilasciato separatamente KotterKnife, non è quello che ti serve? https://github.com/JakeWharton/kotterknife – Sharj

+6

In alternativa, ci sono le estensioni Android Kotlin. Non c'è bisogno di Butterknife. –

+0

Sì, conosco queste opzioni. Vado con anko. Ma grazie per la risposta. –

risposta

13

Funziona con la versione corrente di Kotlin (1.0.0-beta-3595), suggerisco di dare un'occhiata al progetto android-butterknife che può essere trovato nel repository kotlin-examples di JetBrains. Insomma tutto quello che dovete fare è:

  1. Aggiungere il seguente al app/build.gradle del file:

    kapt { 
        generateStubs = true 
    } 
    
  2. Mettere la seguente riga all'interno del dependencies blocco dello stesso file build.gradle (supponendo che è già stato aggiunto compile 'com.jakewharton:butterknife:7.0.1' per le dipendenze):

    kapt 'com.jakewharton:butterknife:7.0.1' 
    

E dovrebbe essere così.

+0

Anche confermato con kotlin stabile 1.0.0. –

+1

A partire da Butterknife 8.x, ora esegui 'kapt' sul compilatore lib invece di un secondo riferimento a butterknife stesso, ad esempio' kapt 'com.jakewharton: butterknife-compiler: 8.0.1''. Il progetto di esempio di JetBrains collegato nella risposta sopra è stato aggiornato per riflettere questo cambiamento. –

3

Butterknife è supportato. Usa kapt: [1], [2].

Si noti che Butterknife non supporta i campi Java privati, quindi è possibile utilizzare il modificatore lateinit per renderlo pubblico.

Inoltre, se si utilizza kapt, apply plugin: 'com.neenbedankt.android-apt' la riga non è più necessaria.

+0

Come rendere Butterknife impostato su Clicks ed ecc. Con kapt? –

Problemi correlati