在安卓中使用数据绑定出现错误:包 *.*.databinding 不存在。

13

我正在尝试在Android应用中实现数据绑定。这个链接是我正在遵循的设置流程。即使我完成了所有必要的实现,但在gradle-build中仍然会出现以下错误:

错误:包com.example.satpracticeapp.databinding不存在。

(这个包是我在MainActivity.java文件中导入的) 我尝试过这个(数据绑定编译器),但它没有起作用。

问题是我已经成功尝试了一个使用数据绑定的“Hello World”应用程序,并且它能够正常工作。但是,当我尝试将其实现到我几周前制作的应用程序中时,我遇到了上述错误。为了寻找解决方案,我将gradle文件从我的成功的"Hello World"应用程序复制粘贴到我的旧应用程序中-这也没有奏效。

这是我的应用程序级别build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.example.satpracticeapp"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding {
        enabled = true
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.0'
}

这是项目级build.gradle文件的buildscript:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

这里是三个文件的最小版本链接(如果需要)

  1. MainActivity.java
  2. ViewModel.java
  3. activity_main.xml

我纠结了很久,但是一直找不到解决方案,每次都会得到相同的构建错误。因此,作为一个暂时的解决方案,我正在尝试将我的类和布局复制粘贴到工作正常的 Hello World 项目中。我漏掉了什么?

编辑:

在徒劳无功的搜索几个小时后,我回到了我的代码。逐字逐句检查并发现 xml 文件中的绑定变量名称有打字错误。现在一切都正常了!


我也遇到过类似的问题。事实证明,Dagger 2.3 和使用数据绑定库的 Gradle 2.0 会导致一些编译错误。在某些情况下,将 Dagger 降级到 2.2 能够解决问题。 - VsMaX
1个回答

2

我曾经遇到过同样的问题,后来发现是在我的*.java类中出现了重复的符号声明。它会在Gradle控制台上显示,但它很容易在数据绑定错误中被忽略。我有大约72个数据绑定错误,而这个重复符号错误就在中间,所以很容易错过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接