Di chuyển từ Kotlin Synthetics sang liên kết khung hiển thị Jetpack

Ngừng sử dụng Tiện ích Kotlin dành cho Android, nghĩa là chúng tôi không còn hỗ trợ việc sử dụng thành phần tổng hợp Kotlin để liên kết khung hiển thị. Nếu ứng dụng của bạn dùng Kotlin tổng hợp để liên kết khung hiển thị, hãy làm theo hướng dẫn này để di chuyển sang liên kết khung hiển thị Jetpack.

Nếu ứng dụng của bạn chưa sử dụng Kotlin Synthetics để liên kết khung hiển thị, hãy xem phần Liên kết khung hiển thị để biết thông tin cơ bản về cách sử dụng.

Cập nhật tệp Gradle

Giống như Tiện ích Android, tính năng liên kết khung hiển thị Jetpack được bật dựa trên từng mô-đun. Đối với mỗi mô-đun sử dụng tính năng liên kết khung hiển thị, hãy đặt tuỳ chọn bản dựng viewBinding thành true trong tệp build.gradle cấp mô-đun:

Groovy

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

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

Nếu ứng dụng của bạn không sử dụng các tính năng Parcelable, hãy xoá dòng bật Tiện ích Android Kotlin:

Groovy

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

Để tìm hiểu thêm về cách bật tính năng liên kết thành phần hiển thị trong một mô-đun, hãy xem Hướng dẫn thiết lập.

Cập nhật các lớp hoạt động và mảnh

Với tính năng liên kết khung hiển thị Jetpack, một lớp liên kết sẽ được tạo cho từng tệp bố cục XML trong mô-đun đó. Tên của lớp liên kết này là tên của tệp XML theo quy ước viết hoa Pascal case với từ Binding được thêm vào ở cuối. Ví dụ: nếu tên của tệp bố cục là result_profile.xml, thì tên của lớp liên kết đã tạo sẽ là ResultProfileBinding.

Để sử dụng các lớp liên kết đã tạo thay vì thuộc tính tổng hợp để tham chiếu khung hiển thị, hãy thay đổi các lớp hoạt động và mảnh bằng cách làm như sau:

  1. Xoá mọi dữ liệu nhập khỏi kotlinx.android.synthetic.

  2. Tăng cường một thực thể của lớp liên kết đã tạo để hoạt động hoặc mảnh sử dụng.

  3. Thay đổi tất cả tham chiếu khung hiển thị để sử dụng thực thể của lớp liên kết thay vì thuộc tính tổng hợp:

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

Để tìm hiểu thêm, hãy xem phần Sử dụng trong hướng dẫn liên kết khung hiển thị.