Переход с Kotlin Synthetics на привязку представлений Jetpack

Расширения Kotlin для Android устарели, поэтому использование синтетических представлений Kotlin для привязки представлений больше не поддерживается. Если в вашем приложении для привязки представлений используются синтетические свойства Kotlin, воспользуйтесь этим руководством, чтобы перейти на привязку представлений Jetpack.

Если в вашем приложении не используется Kotlin synthetics для привязки представлений, ознакомьтесь с основной информацией об использовании привязки представлений.

Обновите файл Gradle

Как и расширения Android, привязка представлений Jetpack включается отдельно для каждого модуля. Для каждого модуля, использующего привязку представлений, задайте для параметра сборки viewBinding значение true в файле build.gradle на уровне модуля:

Яркий

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}

Если в вашем приложении не используются функции Parcelable, удалите строку, которая включает расширения Kotlin для Android:

Яркий

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

Подробнее о том, как включить привязку представлений в модуле, рассказывается в инструкциях по настройке.

Обновите классы Activity и Fragment

Привязка представлений Jetpack генерирует класс привязки для каждого XML-файла макета, содержащегося в модуле. Название этого класса привязки – это название XML-файла в стиле PascalCase с добавлением слова Binding в конце. Например, если файл макета называется result_profile.xml, то сгенерированный класс привязки будет называться ResultProfileBinding.

Чтобы использовать сгенерированные классы привязки вместо синтетических свойств для ссылок на представления, измените классы activity и fragment следующим образом:

  1. Удалить все импортированные данные из сервиса "kotlinx.android.synthetic".

  2. Создайте экземпляр сгенерированного класса привязки для действия или фрагмента.

  3. Измените все ссылки на представления, чтобы использовать экземпляр класса привязки вместо синтетических свойств:

// Reference to "name" TextView using synthetic properties.
name.text = viewModel.nameString

// Reference to "name" TextView using the binding class instance.
binding.name.text = viewModel.nameString

Подробнее об этом рассказывается в разделе Использование руководства по привязке представлений.