Миграция с синтетики Kotlin на привязку представления Jetpack
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Расширения Kotlin для Android устарели, а это означает, что использование синтетики Kotlin для привязки представления больше не поддерживается. Если ваше приложение использует синтезатор Kotlin для привязки представления, воспользуйтесь этим руководством для перехода на привязку представления Jetpack.
Если ваше приложение еще не использует синтетику Kotlin для привязки представления, см. базовую информацию об использовании в разделе Привязка представления .
Обновите файл Gradle
Как и расширения Android, привязка представления Jetpack включается для каждого модуля отдельно. Для каждого модуля, использующего привязку представления, установите для параметра сборки viewBinding значение true в файле build.gradle уровня модуля:
классный
android{...buildFeatures{viewBindingtrue}}
Котлин
android{...buildFeatures{viewBinding=true}}
Если ваше приложение не использует функции Parcelable , удалите строку, которая включает расширения Kotlin для Android:
классный
plugins{id'kotlin-android-extensions'}
Котлин
plugins{kotlin("android.extensions")}
Чтобы узнать больше о включении привязки представления в модуле, см. инструкции по настройке .
Обновление классов активности и фрагментов
При привязке представления Jetpack класс привязки создается для каждого файла макета XML, содержащегося в модуле. Имя этого класса привязки — это имя файла XML в регистре Pascal со словом Binding, добавленным в конце. Например, если имя файла макета — result_profile.xml , имя созданного класса привязки — ResultProfileBinding .
Чтобы использовать сгенерированные классы привязки вместо синтетических свойств для ссылки на представления, измените классы активности и фрагмента, выполнив следующие действия:
Удалите весь импорт из kotlinx.android.synthetic .
Создайте экземпляр созданного класса привязки для использования действием или фрагментом.
Измените все ссылки на представления, чтобы использовать экземпляр класса привязки вместо синтетических свойств:
// 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
Дополнительные сведения см. в разделе «Использование» руководства по привязке представления.
{% дословно %} {% дословно %}
Рекомендуется для вас
Примечание. Текст ссылки отображается, когда JavaScript отключен.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# Migrate from Kotlin synthetics to Jetpack view binding\n\nKotlin Android Extensions is deprecated, which means that using Kotlin\nsynthetics for view binding is no longer supported. If your app uses Kotlin\nsynthetics for view binding, use this guide to migrate to Jetpack view binding.\n\nIf your app doesn't already use Kotlin synthetics for view binding, see [View\nbinding](/topic/libraries/view-binding) for basic usage information.\n\nUpdate the Gradle file\n----------------------\n\nLike Android Extensions, Jetpack view binding is enabled on a module-by-module\nbasis. For each module that uses view binding, set the `viewBinding` build\noption to `true` in the module-level `build.gradle` file: \n\n### Groovy\n\n```groovy\nandroid {\n ...\n buildFeatures {\n viewBinding true\n }\n}\n```\n\n### Kotlin\n\n```kotlin\nandroid {\n ...\n buildFeatures {\n viewBinding = true\n }\n}\n```\n\nIf your app doesn't use [`Parcelable`](/reference/android/os/Parcelable)\nfeatures, remove the line that enables Kotlin Android Extensions: \n\n### Groovy\n\n```groovy\nplugins {\n id 'kotlin-android-extensions'\n}\n```\n\n### Kotlin\n\n```kotlin\nplugins {\n kotlin(\"android.extensions\")\n}\n```\n| **Note:** If your app uses `Parcelable` features, switch to using the standalone `kotlin-parcelize` Gradle plugin described in [Parcelable implementation generator](/kotlin/parcelize).\n\nTo learn more about enabling view binding in a module, see [Setup\ninstructions](/topic/libraries/view-binding#setup).\n\nUpdate activity and fragment classes\n------------------------------------\n\nWith Jetpack view binding, a binding class is generated for each XML layout file\nthat the module contains. The name of this binding class is the name of the XML\nfile in Pascal case with the word *Binding* added at the end. For example, if\nthe name of the layout file is `result_profile.xml`, the name of the generated\nbinding class is `ResultProfileBinding`.\n\nTo use the generated binding classes instead of synthetic properties to\nreference views, change your activity and fragment classes by doing the\nfollowing:\n\n1. Remove all imports from `kotlinx.android.synthetic`.\n\n2. Inflate an instance of the generated binding class for the activity or\n fragment to use.\n\n - For activities, follow the instructions in [Use view binding in\n activities](/topic/libraries/view-binding#activities) to inflate an instance in your activity's [`onCreate()`](/reference/kotlin/android/app/Activity#oncreate) method.\n - For fragments, follow the instructions in [Use view binding in\n fragments](/topic/libraries/view-binding#fragments) to inflate an instance in your fragment's [`onCreateView()`](/reference/kotlin/androidx/fragment/app/Fragment#oncreateview) method.\n3. Change all view references to use the binding class instance instead of\n synthetic properties:\n\n // Reference to \"name\" TextView using synthetic properties.\n name.text = viewModel.nameString\n\n // Reference to \"name\" TextView using the binding class instance.\n binding.name.text = viewModel.nameString\n\nTo learn more, see the [Usage](/topic/libraries/view-binding#usage) section in\nthe view binding guide.\n\nRecommended for you\n-------------------\n\n- Note: link text is displayed when JavaScript is off\n- [View binding](/topic/libraries/view-binding)\n- [Paging library overview](/topic/libraries/architecture/paging/v3-overview)\n- [Test your Paging implementation](/topic/libraries/architecture/paging/test)"]]