Repasemos los dos.
Configuración
Extensiones de Android Kotlin
- Importar extensiones sintéticas de diseño apropiadas:
import kotlinx.android.synthetic.main.<layout>.*
- Referencia vistas de código a través de sus documentos de identidad:
textView.text = "Hello, world!"
. Estas extensiones funcionan en: Activities
, Fragments
y Views
.
Ver enlace
- Crea una referencia vinculante dentro de tu clase:
private lateinit var binding
YourClassBinding
- Inflar su unión
binding = YourClassBinding.inflate(layoutInflater)
en el interior Activity
's onCreate
y llamada setContentView(binding.root)
, o inflarlo en Fragment
' s onCreateView
luego devolverlo:return binding.root
- Vistas de referencia en código a través del enlace utilizando sus identificadores
binding.textView.text = "Hello, world!"
Tipo de seguridad
Kotlin Android Extensions y ViewBinding son seguros para los tipos por definición, porque las vistas referenciadas ya están convertidas en tipos apropiados.
Seguridad nula
Kotlin Android Extensions y ViewBinding son nulos seguros. ViewBinding no tiene ninguna ventaja aquí . En el caso de KAE , si la vista está presente solo en algunas configuraciones de diseño, IDE lo señalará por usted:
Así que solo lo trata como cualquier otro tipo anulable en Kotlin, y el error desaparecerá:
Aplicar cambios de diseño
En el caso de las extensiones de Android Kotlin , los cambios de diseño se traducen instantáneamente en la generación de extensiones sintéticas, por lo que puede usarlas de inmediato. En el caso de ViewBinding , debe construir su proyecto
Uso incorrecto del diseño
En el caso de las extensiones de Android Kotlin , es posible importar extensiones sintéticas de diseño incorrecto, causando así NullPointerException
. Lo mismo se aplica a ViewBinding , ya que podemos importar una Binding
clase incorrecta . Aunque, es más probable que pase por alto la importación incorrecta que el nombre de clase incorrecto, especialmente si el archivo de diseño está bien nombrado después de Activity
/ Fragment
/ View
, por lo que ViewBinding tiene ventaja aquí.
Resumen de KAE vs ViewBinding
- Escriba seguridad - Dibujar.
- Seguridad nula - Dibujar.
- Código repetitivo : KAE gana. De la documentación de Kotlin Android Extensions :
El complemento Kotlin Android Extensions nos permite obtener la misma experiencia que tenemos con algunas de estas bibliotecas, sin tener que agregar ningún código adicional.
- Aplicación de cambios de diseño : KAE gana. Los cambios son instantáneos en contraste con ViewBinding .
- Uso de diseño incorrecto : gana ViewBinding
Creo que hay una gran idea errónea acerca de que ViewBinding es un reemplazo para KAE . La gente escucha palabras clave grandes y las repite sin verificarlas de antemano. Claro, ViewBinding es la mejor opción para el desarrollo de Java en este momento (reemplazo de ButterKnife ), pero no hay o poca ventaja sobre KAE en Kotlin (consulte la sección Uso de diseño incorrecto ).
Nota al
margen: estoy seguro de que a la gente de DataBinding le gustará ViewBinding :)