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 synthétiques Kotlin pour la liaison de vue n'est plus prise en charge. Si votre application utilise la synthèse Kotlin pour la liaison de vue, suivez 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 View 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. Pour chaque module qui utilise la liaison de vue, définissez l'option de 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 les fonctionnalités 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 les instructions de configuration.

Mettre à jour les classes d'activité et 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 contenu dans le module. Le nom de cette classe de liaison est le nom du fichier XML en casse Pascal, avec le mot Binding à la fin. Par exemple, si le nom du fichier de mise en page est result_profile.xml, le nom de la classe de liaison générée est ResultProfileBinding.

Pour utiliser les classes de liaison générées au lieu des propriétés synthétiques pour référencer des vues, modifiez vos classes d'activité et de fragment en procédant comme suit:

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

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

  3. Modifiez toutes les références de vue pour utiliser l'instance de la classe de liaison au lieu des 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 du guide de liaison de vue.