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

Las extensiones de Kotlin para Android dejaron de estar disponibles, lo que significa que usar Kotlin ya no se admiten los sintéticos de vinculación de vistas. Si tu app usa Kotlin sintéticos de la vinculación de vistas, usa esta guía para 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 Ver vinculación para obtener información básica de uso.

Cómo actualizar el archivo Gradle

Al igual que las extensiones de Android, la vinculación de vistas de Jetpack se habilita en módulos base. Para cada módulo que use la vinculación de vista, configura la compilación viewBinding para 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 Parcelable quita la línea que habilita las extensiones de Kotlin para Android:

Groovy

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

Si deseas obtener más información para habilitar la vinculación de vista en un módulo, consulta Configuración. instrucciones.

Cómo actualizar actividades y clases de 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 XML mayúsculas y minúsculas con la palabra Binding agregada al final Por ejemplo, el nombre del archivo de diseño es result_profile.xml, que es el nombre del la clase de vinculación es ResultProfileBinding.

Para usar las clases de vinculación generadas en lugar de las propiedades sintéticas vistas de referencia, cambiar tu actividad y las clases de fragmentos haciendo lo siguiente lo siguiente:

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

  2. Aumentar una instancia de la clase de vinculación generada para la actividad o que se usará.

  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.