Cómo migrar de sintéticos de Kotlin a vinculación de vistas de Jetpack

Las extensiones de Android para Kotlin dejaron de estar disponibles, lo que significa que ya no se admite el uso de sintéticos de Kotlin para la vinculación de vistas. Si tu app usa sintéticos de Kotlin para la vinculación de vistas, usa esta guía a fin de migrar a la vinculación de vistas de Jetpack.

Si tu app aún no usa sintéticos de Kotlin para la vinculación de vistas, consulta Vinculación de vistas a fin de obtener información de uso básica.

Cómo actualizar el archivo Gradle

Al igual que las extensiones de Android, la vinculación de vistas de Jetpack se habilita módulo por módulo. Para cada módulo que usa vinculación de vista, establece la opción de compilación viewBinding en true en el archivo build.gradle a nivel del módulo:

Groovy

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

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

Si tu app no usa las funciones Parcelable, quita la línea que habilita las extensiones de Android Kotlin:

Groovy

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

Si quieres obtener más información para habilitar la vinculación de vistas en un módulo, consulta las Instrucciones de configuración.

Cómo actualizar clases de actividades y fragmentos

Con la vinculación de vista de Jetpack, se genera una clase de vinculación para cada archivo de diseño XML que contiene el módulo. El nombre de esta clase de vinculación es el nombre del archivo XML escrito en mayúsculas y minúsculas, con la palabra Binding al final. Por ejemplo, si el nombre del archivo de diseño es result_profile.xml, el nombre de la clase de vinculación generada es ResultProfileBinding.

Si deseas usar las clases de vinculación generadas en lugar de propiedades sintéticas para hacer referencia a vistas, cambia las clases de actividad y fragmentos de la siguiente manera:

  1. Quita todas las importaciones de kotlinx.android.synthetic.

  2. Aumenta una instancia de la clase de vinculación generada para que la actividad o el fragmento la use.

  3. Cambia todas las referencias de vista para usar la instancia de clase de vinculación en lugar de propiedades sintéticas:

// 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

Para obtener más información, consulta la sección Uso en la guía de vinculación de vistas.