studio databindingutil databinding data android kotlin android-databinding

android - databindingutil - Encuadernación del oyente; No puede encontrar el Setter



databinding kotlin android studio (7)

  1. Eliminar la carpeta .gradle.
  2. Ejecutar el proyecto.
  3. Limpia el proyecto.
  4. Ejecutar el proyecto.

Trabaja para mi. Si el orden se mezcla o falla, no funciona para mí.

Estoy intentando implementar enlaces de escucha , pero cuando ejecuto mi código, aparece el siguiente error:

Caused by: android.databinding.tool.util.LoggedErrorException: Found data binding errors. ****/ data binding error ****msg:Cannot find the setter for attribute ''android:onClick'' with parameter type lambda on android.widget.Button. file:~/GithubBrowser/app/src/main/res/layout/loading_state.xml loc:30:31 - 30:52 ****/ data binding error ****

Este es el archivo de diseño en cuestión:

<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <data> <import type="com.example.app.data.model.Resource"/> <import type="com.example.app.data.model.Status"/> <variable name="resource" type="Resource"/> <variable name="callback" type="com.example.app.ui.common.RetryCallback"/> </data> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:padding="@dimen/default_margin"> <Button android:id="@+id/retry" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/retry" android:onClick="@{() -> callback.retry()}"/> </LinearLayout> </layout>

Y esta es la interfaz RetryCallback referenciada en el diseño:

package com.example.app.ui.common interface RetryCallback { fun retry() }

Editar

El build.gradle nivel build.gradle :

buildscript { ext.android_tools_version = ''3.0.0-alpha3'' ext.kotlin_version = ''1.1.2-5'' repositories { maven { url ''https://maven.google.com'' } jcenter() } dependencies { classpath "com.android.tools.build:gradle:$android_tools_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } ext { architecture_version = ''1.0.0-alpha2'' constraint_version = ''1.0.2'' dagger_version = ''2.11'' espresso_version = ''2.2.2'' glide_version = ''3.7.0'' junit_version = ''4.12'' mockito_version = ''2.7.19'' mock_server_version = ''3.6.0'' moshi_version = ''1.5.0'' retrofit_version = ''2.2.0'' support_version = ''25.4.0'' timber_version = ''4.5.1'' } allprojects { repositories { jcenter() mavenCentral() maven { url ''https://maven.google.com'' } } } task clean(type: Delete) { delete rootProject.buildDir }

Y el módulo de aplicación build.gradle :

apply plugin: ''com.android.application'' apply plugin: ''kotlin-android'' apply plugin: ''kotlin-kapt'' android { compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { applicationId "com.example.app" minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { debug { testCoverageEnabled !project.hasProperty(''android.injected.invoked.from.ide'') } release { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } } dataBinding { enabled = true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } kapt { generateStubs = true } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" compile "com.android.support:appcompat-v7:$support_version" compile "com.android.support:cardview-v7:$support_version" compile "com.android.support:design:$support_version" compile "com.android.support:recyclerview-v7:$support_version" compile "com.android.support.constraint:constraint-layout:$constraint_version" compile "android.arch.lifecycle:extensions:$architecture_version" compile "android.arch.lifecycle:runtime:$architecture_version" compile "android.arch.persistence.room:runtime:$architecture_version" compile "com.google.dagger:dagger:$dagger_version" compile "com.google.dagger:dagger-android:$dagger_version" compile "com.google.dagger:dagger-android-support:$dagger_version" compile "com.squareup.moshi:moshi:$moshi_version" compile "com.squareup.retrofit2:retrofit:$retrofit_version" compile "com.squareup.retrofit2:converter-moshi:$retrofit_version" compile "com.github.bumptech.glide:glide:$glide_version" compile "com.jakewharton.timber:timber:$timber_version" kapt "com.android.databinding:compiler:$android_tools_version" kapt "com.google.dagger:dagger-android-processor:$dagger_version" kapt "com.google.dagger:dagger-compiler:$dagger_version" kapt "android.arch.persistence.room:compiler:$architecture_version" kapt "android.arch.lifecycle:compiler:$architecture_version" testCompile "junit:junit:$junit_version" testCompile "com.squareup.okhttp3:mockwebserver:$mock_server_version" testCompile ("android.arch.core:core-testing:$architecture_version", { exclude group: ''com.android.support'', module: ''support-compat'' exclude group: ''com.android.support'', module: ''support-annotations'' exclude group: ''com.android.support'', module: ''support-ccore-utils'' }) androidTestCompile "com.android.support:appcompat-v7:$support_version" androidTestCompile "com.android.support:cardview-v7:$support_version" androidTestCompile "com.android.support:design:$support_version" androidTestCompile "com.android.support:recyclerview-v7:$support_version" androidTestCompile ("com.android.support.test.espresso:espresso-core:$espresso_version", { exclude group: ''com.android.support'', module: ''support-annotations'' exclude group: ''com.google.code.findbugs'', module: ''jsr305'' }) androidTestCompile ("com.android.support.test.espresso:espresso-contrib:$espresso_version", { exclude group: ''com.android.support'', module: ''support-annotations'' exclude group: ''com.google.code.findbugs'', module: ''jsr305'' }) androidTestCompile "org.mockito:mockito-android:$mockito_version" }


Acabo de tener ese problema y he logrado resolverlo al eliminar las carpetas .idea, .gradle y gradle y dejar que Android Studio vuelva a crear todo el proyecto desde cero desde los archivos de gradle.


Asegúrese de apply plugin: ''kotlin-kapt'' está en build.gradle.

Si está ejecutando esto, no es necesario reconstruir el proyecto, eliminar directorios, borrar la configuración de AS. El IDE está bien sin tenerlo pero el edificio falla.

Sería bueno si Android Studio tuviera mejores mensajes de error para esto.


Caso válido: este error se genera si tiene un error en el archivo xml. En primer lugar, lea detenidamente el xml y si encuentra un problema, corríjalo.

Caso no válido: para mí, el problema se planteó para un archivo que ya se eliminó del proyecto o se cambió el nombre del archivo y el enlace de datos hacía referencia al archivo anterior.

No estoy seguro de cómo deshacerme del problema cada vez, pero tengo varias cosas que a veces funcionan y otras no.

Arreglar el número 1:

Ejecutando ''wrapper de gradle'' en la raíz del proyecto.

Arreglar el número 2:

Android Studio Clean Project

Luego borre estas carpetas en la raíz del proyecto:

rm -rf .gradle /

rm -rf app / build /

rm -rf construir

rm -rf gradle

rm -rf gradlew

Android Studio Invalidar y reiniciar

Todo debería volver a la normalidad ahora.


Según lo sugerido por todos los demás hermanos, sí, el error se resuelve después de eliminar las carpetas .idea, .gradle y gradle.

(esto es solo para alguien curioso por qué sucede esto, a continuación está mi caso de uso): creo que este problema se debió a mi proyecto porque agregué una biblioteca personalizada de rxRecycleViewDataBinding últimamente que podría causar algunos errores de enlace al mezclar las referencias de enlace.


Solo reconstruye el proyecto. Probablemente es porque hiciste alguna refactorización.


Rebuilding proyecto de Rebuilding funcionó para mí.

  • Reconstruir proyecto desde Build>Rebuild
  • Solucione los problemas si obtiene en los registros de compilación.
  • Reconstruir el proyecto de nuevo desde Build>Rebuild