Effectuer une migration depuis Kotlin Synthetics vers la liaison de vue Jetpack
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Les extensions Android Kotlin sont obsolètes. Par conséquent, l'utilisation de Kotlin
La fonctionnalité synthétiques pour la liaison de vue n'est plus acceptée. Si votre application utilise Kotlin
pour la liaison de vue, utilisez ce guide pour migrer vers la liaison de vue Jetpack.
Si votre application n'utilise pas encore Kotlin Synthetics pour la liaison de vue, consultez la section Vue
binding pour obtenir des informations de base sur l'utilisation.
Mettre à jour le fichier Gradle
Comme les extensions Android, la liaison de vue Jetpack est activée module par module
à la base. Pour chaque module qui utilise la liaison de vue, définissez la compilation viewBinding
sur true
dans le fichier build.gradle
au niveau du module:
Groovy
android {
...
buildFeatures {
viewBinding true
}
}
Kotlin
android {
...
buildFeatures {
viewBinding = true
}
}
Si votre application n'utilise pas Parcelable
supprimez la ligne qui active les extensions Android Kotlin:
Groovy
plugins {
id 'kotlin-android-extensions'
}
Kotlin
plugins {
kotlin("android.extensions")
}
Pour en savoir plus sur l'activation de la liaison de vue dans un module, consultez la section Configurer
instructions.
Mettre à jour l'activité et les classes de fragment
Avec la liaison de vue Jetpack, une classe de liaison est générée pour chaque fichier de mise en page XML.
que contient le module. Le nom de cette classe de liaison est le nom du fichier XML
en Pascal, avec le mot Binding (Liaison) ajouté à la fin. Par exemple, si
Le nom du fichier de mise en page est result_profile.xml
. Il s'agit du nom de l'instance
la classe de liaison est ResultProfileBinding
.
Pour utiliser les classes de liaison générées au lieu des propriétés synthétiques pour
des vues de référence, modifiez votre activité et vos classes de fragment en effectuant la
suivantes:
Supprimez toutes les importations de kotlinx.android.synthetic
.
Gonfler une instance de la classe de liaison générée pour l'activité
fragment à utiliser.
Modifiez toutes les références de vue pour utiliser l'instance de classe de liaison au lieu de
propriétés synthétiques:
// 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
Pour en savoir plus, consultez la section Utilisation dans
le guide de liaison de vue.
Recommandations personnalisées
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (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)"]]