Migrar de sintéticos do Kotlin para vinculação de visualizações do Jetpack

As extensões Kotlin do Android foram descontinuadas, o que significa que o uso de sintéticos do Kotlin para vinculação de visualizações não é mais compatível. Se o app usa sintéticos do Kotlin para vinculação de visualizações, use este guia para migrar para a vinculação de visualizações do Jetpack.

Se o app ainda não usar os sintéticos do Kotlin para vinculação de visualizações, consulte Vinculação de visualização para ver informações básicas de uso.

Atualizar o arquivo do Gradle

Assim como as extensões do Android, a vinculação de visualizações do Jetpack é ativada módulo por módulo. Para cada módulo que usa a vinculação de visualizações, defina a opção de build viewBinding como true no arquivo build.gradle do módulo:

Groovy

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

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

Se o app não usar os recursos Parcelable, remova a linha que ativa as extensões Kotlin do Android:

Groovy

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

Para saber mais sobre como ativar a vinculação de visualizações em um módulo, consulte as Instruções de configuração.

Atualizar atividades e classes de fragmentos

Com a vinculação de visualizações do Jetpack, uma classe de vinculação é gerada para cada arquivo de layout XML que o módulo contém. O nome dessa classe de vinculação é o nome do arquivo XML em letras maiúsculas e minúsculas, em Pascal, com a palavra Binding adicionada no final. Por exemplo, se o nome do arquivo de layout for result_profile.xml, o nome da classe de vinculação gerada será ResultProfileBinding.

Para usar as classes de vinculação geradas em vez de propriedades sintéticas para referenciar visualizações, mude a atividade e as classes de fragmento fazendo o seguinte:

  1. Remova todas as importações de kotlinx.android.synthetic.

  2. Infle uma instância da classe de vinculação gerada para que a atividade ou o fragmento seja usado.

  3. Mude todas as referências de visualização para usar a instância de classe de vinculação em vez de propriedades 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 saber mais, consulte a seção Uso no guia de vinculação de visualizações.