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

Kotlin Android Uzantıları kullanımdan kaldırıldığı için Kotlin görünüm bağlama için sentetikler artık desteklenmiyor. Uygulamanızda Kotlin kullanılıyorsa sentetik öğeleri kullanıyorsanız, Jetpack görünümü bağlamasına geçiş yapmak için bu kılavuzu kullanın.

Uygulamanızda görüntüleme bağlama için halihazırda Kotlin sentetiği kullanılmıyorsa Görüntüleme bağlamayı inceleyin.

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ğlamayı kullanan her modül için viewBinding derlemesini ayarlayın modül düzeyindeki build.gradle dosyasında true seçeneğini görürsünüz:

Eski

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

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

Uygulamanızda Parcelable kullanılmıyorsa özellikleri, Kotlin Android Uzantılarını etkinleştiren satırı kaldırın:

Eski

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ı inceleyin.

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

Jetpack görünümü bağlama ile her XML düzen dosyası için bir bağlama sınıfı oluşturulur göstereceğim. Bu bağlama sınıfının adı XML'in adıdır. dosyasını Pascal içinde, sonuna Binding kelimesi ekleyerek ekleyin. Örneğin, düzen dosyasının adı result_profile.xml, oluşturulan bağlama sınıfı: ResultProfileBinding.

Oluşturmak için sentetik özellikler yerine oluşturulan bağlama sınıflarını referans görünümlerini oluşturmak, etkinliğinizi ve parça sınıflarınızı değiştirmek için takip etmek için:

  1. kotlinx.android.synthetic öğesinden tüm içe aktarma işlemlerini kaldırın.

  2. Etkinlik için oluşturulan bağlama sınıfının bir örneğini şişir veya bir parça seçin.

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

// 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 için Kullanım bölümüne görünüm bağlama kılavuzuna bakın.

ziyaret edin.