监听器绑定; 找不到塞特犬

我正在尝试实现侦听器绑定 ,但是当我运行我的代码时,我收到以下错误:

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 **** 

这是有问题的布局文件:

          

这是布局中引用的RetryCallback接口:

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

编辑

顶级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 } 

和app模块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" } 

我刚刚遇到了这个问题,我设法通过删除.idea,.gradle和gradle文件夹来解决它,让Android Studio从gradle文件中重新创建整个项目。

之前正在运行,没有重建项目,删除目录,清除AS设置做了任何事情。

最后,我需要添加apply plugin: 'kotlin-kapt'在我的build.gradle中。 没有它,IDE很好,但构建失败了。 我怀疑从一开始就有用,但我使用的教程从未提及它。

如果android studio有更好的错误消息,这将是很好的。

只需重建项目。 这可能是因为你做了一些重构

  1. 删除.gradle文件夹。
  2. 运行该项目。
  3. 清理项目。
  4. 运行该项目。

为我工作。 如果订单混合或错过,它不适合我。

有效情况:如果xml文件中有错误,则会引发此错误。 首先仔细阅读xml,如果发现问题,请修复它。

无效的情况:对我来说,问题是针对已从项目中删除的文件或文件已重命名并且数据绑定引用旧文件。

我不确定如何每次都摆脱这个问题,但我有很多事情有时会起作用,有时候却没有。

修正1号:

在项目根目录中运行“gradle wrapper”。

修正2:

Android Studio清洁项目

接下来删除项目根目录中的这些文件夹:

rm -rf .gradle /

rm -rf app / build /

rm -rf build

rm -rf gradle

rm -rf gradlew

Android Studio无效并重新启动

现在一切都应该恢复正常了。

正如所有其他兄弟所建议的,是的,删除.idea,.gradle和gradle文件夹后错误会解决。

(这只是为了有人好奇为什么会发生这种情况,下面是我的用例):我认为这个问题在我的项目中引起,因为我最近添加了一个rxRecycleViewDataBinding自定义库,这可能会通过混合绑定引用导致一些绑定错误。

Rebuilding项目为我工作。

  • Build>Rebuild重建项目
  • 如果您进入构建日志,则修复问题。
  • Build>Rebuild再次重建项目