从Kotlin synthetics迁移到Jetpack视图绑定

Kotlin Android Extensions已弃用,这意味着不再支持使用Kotlin synthetics进行视图绑定。如果您的应用使用Kotlin synthetics进行视图绑定,请使用本指南迁移到Jetpack视图绑定。

如果您的应用尚未使用Kotlin synthetics进行视图绑定,请参阅视图绑定以获取基本用法信息。

更新Gradle文件

与Android Extensions类似,Jetpack视图绑定是在每个模块的基础上启用的。对于每个使用视图绑定的模块,请在模块级build.gradle文件中将viewBinding构建选项设置为true

Groovy

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

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

如果您的应用未使用Parcelable功能,请删除启用Kotlin Android Extensions的行

Groovy

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

要了解有关在模块中启用视图绑定的更多信息,请参阅设置说明

更新活动和片段类

使用Jetpack视图绑定,会为模块包含的每个XML布局文件生成一个绑定类。此绑定类的名称是XML文件的名称(采用Pascal大小写),并在末尾添加了单词“Binding”。例如,如果布局文件的名称是result_profile.xml,则生成的绑定类的名称是ResultProfileBinding

要使用生成的绑定类而不是合成属性来引用视图,请通过执行以下操作更改活动和片段类

  1. 删除来自kotlinx.android.synthetic的所有导入。

  2. 为活动或片段要使用的实例膨胀生成的绑定类。

  3. 更改所有视图引用,以使用绑定类实例而不是合成属性。

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

要了解更多信息,请参阅视图绑定指南中的用法部分。