Выравнивание с котлин и маслобойник

Аннотации кликов ButterKnife не работают после смены java на код kotlin.

@OnClick(R.id.btnlogin) internal fun onLogin() { if (isValid) { getLoginAPi() } } 

    Вы проверили, что вы правильно подключили ButterKnife? У вас должны быть эти строки в файле build.gradle:

     apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' //... other stuff kapt { generateStubs = true } dependencies { compile 'com.jakewharton:butterknife:8.6.0' kapt 'com.jakewharton:butterknife:8.6.0' } 

    Есть несколько возможных проблем с кодом. Но давайте сначала начнем с правильной настройки Butterknife

    Убедитесь, что у вас есть следующее

    Файл верхнего уровня build.gradle

     dependencies { classpath 'com.android.tools.build:gradle:3.0.0-alpha7' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.jakewharton:butterknife-gradle-plugin:8.6.0" } 

    Файл build.gradle на уровне приложения

     apply plugin: 'com.android.application' apply plugin: 'kotlin-android' ... dependencies{ compile 'com.jakewharton:butterknife:8.6.0' kapt 'com.jakewharton:butterknife-compiler:8.6.0' } 

    Как только это будет сделано, убедитесь, что все, что вам нужно для доступа к масляному носителю, является общедоступным, поэтому измените функцию на

     @OnClick(R.id.btnlogin) fun onLogin() { if (isValid) { getLoginAPi() } } 

    Для @BindView убедитесь, что у вас есть следующий синтаксис

     @BindView(R.id.editTextKg) @JvmField var editTextKg: EditText? = null 

    Это будет работать, потому что видимость по умолчанию в Котлине является общедоступной

    Углеродистые заглушки, как упоминал @Gaket в его коде, также рекомендуется большинством, но он работает без этого для меня

    Вы должны проверить свои зависимости, более конкретно, вы должны использовать kapt для обработчика аннотаций:

     dependencies { ... compile 'com.jakewharton:butterknife:8.6.0' kapt 'com.jakewharton:butterknife-compiler:8.6.0' }