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

Tiện ích Kotlin dành cho Android không còn được dùng nữa, nghĩa là việc sử dụng Kotlin dữ liệu tổng hợp để liên kết khung hiển thị không còn được hỗ trợ. Nếu ứng dụng của bạn sử dụng Kotlin dữ liệu tổng hợp để liên kết khung hiển thị, hãy sử dụng 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 View ràng buộc để biết thông tin sử dụng cơ bản.

Cập nhật tệp Gradle

Giống như các tiện ích dành cho Android, tính năng liên kết khung hiển thị Jetpack được bật trên từng mô-đun cơ sở. Đố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 bản dựng viewBinding vào 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 Parcelable tính năng, hãy xoá dòng bật Tiện ích Kotlin dành cho Android:

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 phần Thiết lập hướng dẫn.

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

Với tính năng liên kết khung hiển thị Jetpack, một lớp liên kết được tạo cho mỗi tệp bố cục XML mà mô-đun có chứa. Tên của lớp liên kết này là tên của XML kiểu viết hoa Pascal có 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, tên của phần tử được tạo lớp liên kết là ResultProfileBinding.

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

  1. Xoá tất cả 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 cho hoạt động hoặc để sử dụng.

  3. Thay đổi tất cả thông tin tham chiếu đến khung hiển thị để sử dụng thực thể 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 Cách sử dụng trong hướng dẫn liên kết khung hiển thị.