İkisini gözden geçirelim.
Yapılandırma
Kotlin Android Uzantıları
- Uygun düzen sentetik uzantılarını içe aktarın:
import kotlinx.android.synthetic.main.<layout>.*
- Onların kimlikleri aracılığıyla kodunda görüşlerini başvurusu:
textView.text = "Hello, world!"
. Bu uzantılar üzerinde çalışmak: Activities
, Fragments
ve Views
.
Bağlamayı Görüntüle
- Sınıfınızın içinde bağlayıcı referans oluşturun:
private lateinit var binding
YourClassBinding
- Senin bağlama şişirmek
binding = YourClassBinding.inflate(layoutInflater)
içini Activity
'ın onCreate
ve çağrı setContentView(binding.root)
, ya da o şişirmek Fragment
s' onCreateView
iade o zaman:return binding.root
- Kimliklerini kullanarak bağlama yoluyla koddaki referans görünümleri
binding.textView.text = "Hello, world!"
Tip güvenliği
Başvurulan görünümler zaten uygun türlere çevrildiğinden Kotlin Android Uzantıları ve ViewBinding tanım olarak güvenlidir.
Boş güvenlik
Kotlin Android Uzantıları ve ViewBinding her ikisi de güvende değil. ViewBinding'ın burada bir avantajı yok . KAE durumunda, görünüm yalnızca bazı düzen yapılandırmalarında mevcutsa, IDE bunu sizin için gösterecektir:
Bu yüzden sadece Kotlin'deki diğer boş değerli türler olarak davranırsınız ve hata kaybolur:
Düzen değişikliklerini uygulama
Kotlin Android Uzantıları durumunda , düzen değişiklikleri anında sentetik uzantıların oluşturulmasına dönüşür, böylece bunları hemen kullanabilirsiniz. ViewBinding durumunda, projenizi oluşturmanız gerekir
Yanlış düzen kullanımı
Kotlin Android Uzantıları durumunda, yanlış düzen sentetik uzantılarını içe aktarmak ve böylece neden olmak mümkündür NullPointerException
. Aynısı ViewBinding için de geçerlidir , çünkü yanlış Binding
sınıfı içe aktarabiliriz . Her ne kadar, özellikle düzen dosyası Activity
/ Fragment
/ öğesinden sonra iyi adlandırılmışsa, yanlış sınıf adından daha fazla yanlış içe aktarmayı göz ardı etmek daha olasıdır View
, bu nedenle ViewBinding burada üst tarafa sahiptir.
KAE vs ViewBinding özeti
- Tip güvenliği - Çizim.
- Boş güvenlik - Çizim.
- Ortak kod - KAE kazanır. Kotlin Android Uzantıları belgelerinden :
Kotlin Android Extensions eklentisi, bu kodlardan bazılarında sahip olduğumuz aynı deneyimi, ekstra kod eklemenize gerek kalmadan elde etmemizi sağlar.
- Düzen değişikliklerini uygulama - KAE kazanır. ViewBinding'ın aksine değişiklikler anında yapılır .
- Yanlış düzen kullanımı - ViewBinding kazanıyor
Bence ViewBinding KAE yerine ikame hakkında büyük bir yanlış anlama var . İnsanlar büyük anahtar kelimeleri duyar ve önceden doğrulamadan tekrarlar. Tabii, ViewBinding şu anda Java geliştirme için en iyi seçenek (için yerine geçer BUTTERKNIFE ), ancak üzerinde hiç ya da az avantaj KAE KOTLIN içinde (bkz Yanlış düzen kullanım bölümü).
Yan not:
Eminim DataBinding insanlar ViewBinding seveceksiniz :)