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

As extensões do Kotlin para Android foram descontinuadas, ou seja, o uso do Kotlin sintéticos para vinculação de visualizações não são mais compatíveis. Se o app usa o Kotlin sintéticos 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 usa sintéticos do Kotlin para vinculação de visualizações, consulte Visualização vinculação para 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. base. Para cada módulo que usa a vinculação de visualizações, defina o build viewBinding. para true no arquivo build.gradle do módulo:

Groovy

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

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

Caso o app não use o Parcelable remova a linha que ativa as extensões do Kotlin para 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 Configuração instruções.

Atualizar classes de atividades e 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 arquivo em letras maiúsculas do Pascal com a palavra Binding adicionada ao final. Por exemplo, se o nome do arquivo de layout é result_profile.xml, o nome do classe de vinculação é ResultProfileBinding.

Usar as classes de vinculação geradas em vez de propriedades sintéticas para visualizações de referência, mude a atividade e as classes de fragmento ao seguintes:

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

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

  3. Mude todas as referências de visualização para usar a instância da classe de vinculação em vez da 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 na guia de vinculação de visualizações.