Melakukan migrasi dari sintetis Kotlin ke Jetpack view binding

Ekstensi Android Kotlin tidak digunakan lagi, yang berarti menggunakan Kotlin sintetis untuk view binding tidak lagi didukung. Jika aplikasi Anda menggunakan 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 informasi penggunaan dasar.

Mengupdate file Gradle

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

Groovy

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

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

Jika aplikasi Anda tidak menggunakan 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 Penyiapan petunjuk khusus.

Mengupdate class aktivitas dan fragmen

Dengan Jetpack view binding, class binding dibuat untuk setiap file tata letak XML yang terdapat di dalam modul. Nama class binding ini adalah nama XML dalam Pascal case dengan kata Binding ditambahkan di akhir. Misalnya, jika nama file tata letak adalah result_profile.xml, nama file yang dihasilkan class binding adalah ResultProfileBinding.

Untuk menggunakan class binding, bukan properti sintetis, tampilan referensi, ubah aktivitas dan class fragmen dengan melakukan berikut ini:

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

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

  3. Mengubah semua referensi tampilan agar menggunakan instance class binding, bukan sifat 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.