Melakukan migrasi dari sintetis Kotlin ke Jetpack view binding

Ekstensi Android Kotlin tidak digunakan lagi, yang berarti penggunaan sintetis Kotlin untuk view binding tidak lagi didukung. Jika aplikasi Anda menggunakan sintetis Kotlin untuk view binding, gunakan panduan ini untuk bermigrasi ke view binding Jetpack.

Jika aplikasi Anda belum menggunakan sintetis Kotlin untuk view binding, lihat View binding untuk mengetahui informasi penggunaan dasar.

Mengupdate file Gradle

Seperti Ekstensi Android, view binding Jetpack diaktifkan pada dasar modul demi modul. Untuk setiap modul yang menggunakan view binding, tetapkan opsi build viewBinding ke true dalam file build.gradle level modul:

Groovy

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

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

Jika aplikasi Anda tidak menggunakan fitur Parcelable, hapus baris yang mengaktifkan Ekstensi Android Kotlin:

Groovy

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

Untuk mempelajari lebih lanjut cara mengaktifkan view binding dalam modul, lihat Petunjuk penyiapan.

Mengupdate class aktivitas dan fragmen

Dengan view binding Jetpack, class binding akan dihasilkan untuk setiap file tata letak XML yang dimuat modul. Nama class binding ini adalah nama file XML dalam kasus Pascal dengan kata Binding ditambahkan di bagian akhirnya. Misalnya, jika nama file tata letak adalah result_profile.xml, nama class binding yang dihasilkan adalah ResultProfileBinding.

Untuk menggunakan class binding yang dihasilkan, bukan properti sintetis, untuk mereferensikan tampilan, ubah class aktivitas dan fragmen Anda dengan melakukan hal berikut:

  1. Hapus semua impor dari kotlinx.android.synthetic.

  2. Meng-inflate instance class binding yang dihasilkan untuk digunakan oleh aktivitas atau fragmen.

  3. Ubah semua referensi tampilan untuk menggunakan instance class binding, bukan properti sintetis:

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

Untuk mempelajari lebih lanjut, lihat bagian Penggunaan di panduan view binding.