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
。
要使用生成的绑定类而不是合成属性来引用视图,请通过执行以下操作更改您的活动和片段类
删除来自
kotlinx.android.synthetic
的所有导入。为活动或片段要使用的活动或片段填充生成的绑定类的实例。
- 对于活动,请按照 在活动中使用视图绑定 中的说明在活动的
onCreate()
方法中填充实例。 - 对于片段,请按照 在片段中使用视图绑定 中的说明在片段的
onCreateView()
方法中填充实例。
- 对于活动,请按照 在活动中使用视图绑定 中的说明在活动的
更改所有视图引用以使用绑定类实例而不是合成属性
// 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
要了解详细信息,请参阅视图绑定指南中的 用法 部分。