Passons en revue les deux.
Configuration
Extensions Android Kotlin
- Importez les extensions synthétiques de mise en page appropriées:
import kotlinx.android.synthetic.main.<layout>.*
- Référence vues en code via leur carte d' identité:
textView.text = "Hello, world!"
. Ces extensions fonctionnent sur: Activities
, Fragments
et Views
.
Voir la reliure
- Créez une référence de liaison dans votre classe:
private lateinit var binding
YourClassBinding
- Gonflez votre liaison
binding = YourClassBinding.inflate(layoutInflater)
dans Activity
« s onCreate
et un appel setContentView(binding.root)
, ou le gonfler dans Fragment
l » onCreateView
retour il:return binding.root
- Vues de référence dans le code via une liaison à l'aide de leurs identifiants
binding.textView.text = "Hello, world!"
Type de sécurité
Les extensions Android Kotlin et ViewBinding sont sécuritaires par définition, car les vues référencées sont déjà converties en types appropriés.
Sécurité nulle
Les extensions Kotlin Android et ViewBinding sont toutes deux sans danger. ViewBinding n'a aucun avantage ici . Dans le cas de KAE , si la vue n'est présente que dans certaines configurations de mise en page, IDE vous le signalera:
Donc, vous le traitez simplement comme n'importe quel autre type nullable dans Kotlin, et l'erreur disparaîtra:
Application des modifications de disposition
Dans le cas des extensions Kotlin Android , les changements de disposition se traduisent instantanément par la génération d'extensions synthétiques, vous pouvez donc les utiliser immédiatement. En cas de ViewBinding , vous devez construire votre projet
Utilisation incorrecte de la mise en page
En cas d' extensions Kotlin Android , il est possible d'importer des extensions synthétiques de mise en page incorrectes, provoquant ainsi NullPointerException
. La même chose s'applique à ViewBinding , car nous pouvons importer une mauvaise Binding
classe. Bien qu'il soit plus probable d'oublier l'importation incorrecte que le nom de classe incorrect, surtout si le fichier de mise en page porte bien le nom de Activity
/ Fragment
/ View
, ViewBinding a donc le dessus ici.
Résumé de KAE vs ViewBinding
- Type de sécurité - Draw.
- Sécurité nulle - Draw.
- Code de la chaudière - KAE gagne. Dans la documentation des extensions Android de Kotlin :
Le plugin Kotlin Android Extensions nous permet d'obtenir la même expérience que nous avons avec certaines de ces bibliothèques, sans avoir à ajouter de code supplémentaire.
- Appliquer les changements de disposition - KAE gagne. Les modifications sont instantanées contrairement à ViewBinding .
- Utilisation de mise en page incorrecte - ViewBinding gagne
Je pense qu'il y a une grande idée fausse sur le fait que ViewBinding remplace KAE . Les gens entendent de gros mots clés et les répètent sans les vérifier au préalable. Bien sûr, ViewBinding est la meilleure option pour le développement Java en ce moment (remplacement de ButterKnife ), mais il n'y a pas ou peu d'avantages sur KAE dans Kotlin (voir la section Utilisation incorrecte de la mise en page ).
Note latérale:
je suis sûr que les utilisateurs de DataBinding apprécieront ViewBinding :)