Rivediamo i due.
Configurazione
Estensioni Android di Kotlin
- Importa estensioni sintetiche di layout appropriate:
import kotlinx.android.synthetic.main.<layout>.*
- Riferimento viste in codice tramite i loro ID:
textView.text = "Hello, world!"
. Queste estensioni lavorano su: Activities
, Fragments
e Views
.
Visualizza rilegatura
- Crea riferimento vincolante all'interno della tua classe:
private lateinit var binding
YourClassBinding
- Gonfiare il legame
binding = YourClassBinding.inflate(layoutInflater)
dentro Activity
's onCreate
e la chiamata setContentView(binding.root)
, o gonfiare in Fragment
' s onCreateView
poi tornare:return binding.root
- Visualizzazioni di riferimento nel codice tramite associazione utilizzando i loro ID
binding.textView.text = "Hello, world!"
Digitare sicurezza
Kotlin Android Extensions e ViewBinding sono sicuri per definizione, poiché le viste referenziate sono già espresse in tipi appropriati.
Sicurezza nulla
Le estensioni Android e ViewBinding di Kotlin sono entrambe sicure per nulla. ViewBinding non ha alcun vantaggio qui . Nel caso di KAE , se la vista è presente solo in alcune configurazioni di layout, IDE lo segnalerà per te:
Quindi lo tratti come qualsiasi altro tipo nullable in Kotlin e l'errore scompare:
Applicazione di modifiche al layout
Nel caso delle estensioni Android di Kotlin , le modifiche al layout si traducono istantaneamente nella generazione di estensioni sintetiche, in modo da poterle utilizzare immediatamente. Nel caso di ViewBinding , devi creare il tuo progetto
Utilizzo errato del layout
Nel caso di estensioni Android di Kotlin , è possibile importare estensioni sintetiche di layout errate, causando così NullPointerException
. Lo stesso vale per ViewBinding , poiché possiamo importare una Binding
classe errata . Tuttavia, è più probabile trascurare l'importazione errata rispetto al nome di classe errato, soprattutto se il file di layout ha un nome corretto dopo Activity
/ Fragment
/ View
, quindi ViewBinding ha il sopravvento qui.
Riepilogo di KAE vs ViewBinding
- Digitare sicurezza - Disegna.
- Sicurezza nulla - Disegna.
- Codice della caldaia - KAE vince. Dalla documentazione relativa alle estensioni Android di Kotlin :
Il plug-in Estensioni Android di Kotlin ci consente di ottenere la stessa esperienza che abbiamo con alcune di queste librerie, senza dover aggiungere alcun codice aggiuntivo.
- Applicazione delle modifiche al layout : vince KAE . Le modifiche sono istantanee rispetto a ViewBinding .
- Utilizzo errato del layout : vince ViewBinding
Penso che ci sia un grosso malinteso sul fatto che ViewBinding venga sostituito da KAE . Le persone ascoltano le parole chiave grandi e le ripetono senza verificarle in anticipo. Certo, ViewBinding è la migliore opzione per lo sviluppo Java in questo momento (sostituzione per ButterKnife ), ma non ci sono o pochi vantaggi rispetto a KAE in Kotlin (vedere la sezione Uso errato del layout ).
Nota
a margine : sono sicuro che alle persone di DataBinding piacerà ViewBinding :)