Effectuer une migration depuis Kotlin Synthetics vers la liaison de vue Jetpack

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:

  1. Supprimez toutes les importations de kotlinx.android.synthetic.

  2. Gonfler une instance de la classe de liaison générée pour l'activité fragment à utiliser.

  3. 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.