No obtuve ninguna respuesta satisfactoria. Así que aquí están los consejos que son un resumen de mi conocimiento de vinculación de datos.
Consejos para resolver problemas de enlace de datos
Actualizar
Para obtener errores y sugerencias más precisos , recomiendo encarecidamente actualizar la versión del complemento de Android Studio y Gradle a la última versión. Porque no tengo muchos problemas después de la versión AS 3.2.
Consulte la última versión de Android Studio y el último complemento de Gradle .
Solución original
Después de leer esta respuesta, no se quedará atascado en problemas de generación automática de enlaces de datos para clases y variables de datos .
Compruebe estos puntos uno por uno. Cualquiera de estos puede hacer su trabajo. El punto 3 al final es muy importante, así que no se los pierda.
1. Compruebe si el enlace de datos está habilitado
Debería tener habilitado el enlace de datos en build.gradle
. Si no es así, agregue esto y Sync .
android {
...
dataBinding {
enabled = true
}
...
}
2. El diseño de cheques se convierte en diseño de encuadernación
Ahora, si desea que se genere una clase de enlace de datos, debe ajustar xml layout
con el enlace de datos ( <layout
etiqueta). Algo como esto.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
</layout>
Junto con esto, verifique si los nombres de las variables vinculantes son correctos como en la clase de modelo de vista
3. ¿Nombre de clase de enlace generado automáticamente?
Su clase de enlace de datos debe generarse después de crear el diseño de enlace.
Si el nombre de la presentación es en el caso de la serpiente activity_main.xml
entonces la clase de enlace de datos se genera en caso de camellos como ActivityMainBinding
.
4. ¿No puede ver la sugerencia de importación?
A veces, cuando escribe ActivityMai...
, no muestra la sugerencia , en ese caso, importe manualmente .
import <yourpackage>databinding.ActivityMainBinding;
5. Leer Build Fail Logcat
Su clase de enlace y las nuevas variables en el diseño no se generarán si su compilación falla. Así que primero Make project con Ctrl + F9 (Build> Make project) .
- Si una compilación falla, vea qué es un error, generalmente tenemos errores en los campos de diseño. Los registros de errores señalarán el número de línea de error con el problema.
- El enlace puede fallar y causar algún error estúpido , como un error de sintaxis o una importación faltante. En ese caso, obtendrá logcat lleno de errores de clases vinculantes. Pero debe leer logcat completo para encontrar el problema apropiado .
6. Cierre y abra el proyecto de reciente
Siempre hago esto porque lleva mucho menos tiempo que Rebuild
/ Make
project.
- Cerrar proyecto desde Archivo> Cerrar proyecto
- Abrir de nuevo desde reciente
Tenga en cuenta que prefiero Cerrar y Abrir desde Reciente porque lleva mucho menos tiempo que Rebuild / Restart IDE .
7. Proyecto de reconstrucción
Si aún no se genera su clase. (En algún momento cuando pegamos el archivo de diseño, entonces sucede). Luego, reconstruir proyecto desde Build> Rebuild
( no construir o hacer proyecto ). Generará su clase de enlace de datos. ( Rebuild hace magia por mí. )
8. Tener la última versión de Android Studio
Después de actualizar AS a Android Studio 3.2 , sentí que se corrigían muchos errores en la generación automática de enlace de datos. Por lo tanto, también debe tener el último AS.
Solución para <variables
<data>
<variable
name="item"
type="com.package.Model"/>
</data>
Por lo general, cuando colocamos una variable en el diseño, crea un captador y un definidor de ella. Y podemos usar binding.setItem(item);
y binding.getItem();
, pero si no puede ver esos métodos, lea la siguiente información.
1. Cierre y abra el proyecto reciente.
Si ha creado una variable de datos, <variable
en su diseño y no muestra su establecedor y captador en la clase de enlace de datos, entonces Cerrar y Abrir desde Reciente su proyecto.
2. Proyecto limpio después de cambiar el tipo
Si cambió el tipo de algunos <variable
en su diseño y el tipo de setter getter no cambia, entonces Limpiar proyecto ( Build> Clean Project
)
Ultimas palabras
Finalmente, si aún no se genera su clase de enlace, entonces tenemos nuestra arma más poderosa. - Reinicie Android Studio: D
- Primero, intente reiniciar , esto siempre genera variables de mi diseño de enlace después del reinicio.
- Si no funciona, invalide la caché y reinicie .
Esto es todo lo que hago para resolver mis errores de vinculación de datos. Si tiene más problemas, puede comentar aquí.
dataBinding.enabled
en tu build.gradle?