Kotlin sentezinden Jetpack görünüm bağlamaya geçiş yapın

Kotlin Android Uzantıları kullanımdan kaldırılmıştır. Bu nedenle, görünüm bağlama için Kotlin sentetiklerini kullanma özelliği artık desteklenmemektedir. Uygulamanız görünüm bağlama için Kotlin sentezini kullanıyorsa Jetpack görünüm bağlamaya geçiş için bu kılavuzu kullanın.

Uygulamanızda görünüm bağlama için zaten Kotlin sentetik olması gerekmiyorsa temel kullanım bilgileri için Görünüm bağlama bölümüne bakın.

Gradle dosyasını güncelleme

Android Uzantıları gibi Jetpack görünüm bağlaması da modül bazında etkinleştirilir. Görünüm bağlamanın kullanıldığı her modül için modül düzeyindeki build.gradle dosyasında viewBinding derleme seçeneğini true olarak ayarlayın:

Modern

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

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

Uygulamanız Parcelable özelliklerini kullanmıyorsa Kotlin Android Uzantılarını etkinleştiren satırı kaldırın:

Modern

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

Bir modülde görünüm bağlamayı etkinleştirme hakkında daha fazla bilgi edinmek için Kurulum talimatları bölümüne bakın.

Etkinliği ve parça sınıflarını güncelleme

Jetpack görünüm bağlaması ile, modülün içerdiği her XML düzen dosyası için bir bağlama sınıfı oluşturulur. Bu bağlama sınıfının adı, XML dosyasının Pascal örneğindeki adıdır ve sonuna Binding kelimesi eklenir. Örneğin, düzen dosyasının adı result_profile.xml ise oluşturulan bağlama sınıfının adı ResultProfileBinding olur.

Görünümlere referans vermek için sentetik özellikler yerine oluşturulan bağlama sınıflarını kullanmak istiyorsanız aşağıdakileri yaparak etkinliğinizi ve parça sınıflarınızı değiştirin:

  1. kotlinx.android.synthetic öğesinden tüm içe aktarmaları kaldır.

  2. Kullanılacak etkinlik veya parça için oluşturulan bağlama sınıfının bir örneğini şişirin.

  3. Tüm görünüm referanslarını sentetik özellikler yerine bağlama sınıfı örneğini kullanacak şekilde değiştirin:

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

Daha fazla bilgi edinmek için görünüm bağlama kılavuzundaki Kullanım bölümüne bakın.