从 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")
}

要了解如何在模块中启用视图绑定的详细信息,请参阅设置说明

更新 Activity 和 Fragment 类

使用 Jetpack 视图绑定,模块包含的每个 XML 布局文件都会生成一个绑定类。此绑定类的名称是 XML 文件名的 Pascal 格式,末尾添加了 Binding 一词。例如,如果布局文件名为 result_profile.xml,则生成的绑定类名为 ResultProfileBinding

要使用生成的绑定类而不是 synthetic 属性来引用视图,请通过执行以下操作更改您的 Activity 和 Fragment 类:

  1. 移除 kotlinx.android.synthetic 中的所有导入。

  2. 为 Activity 或 Fragment 膨胀生成的绑定类的实例以供使用。

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

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

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