Android数据绑定:包不存在

时间:2015-11-26 08:58:32

标签: android data-binding android-databinding

我正在尝试使用Android的数据绑定。

我不能再建立我的项目了。我收到了这个错误:

  

“错误:(13,46)错误:包ch.company.project.databinding没有   存在“

这是我的gradle

http://pastebin.com/dkXd1Mxr

http://pastebin.com/n9hkFWGQ

这里是gradle输出:

https://pastebin.com/w93Rausg

18 个答案:

答案 0 :(得分:33)

感谢Yigit!

问题不是直接链接到Android Databinding。 项目中存在错误(某些变量未正确设置)

我建议使用gradle与“ - debug和--stacktrace”获取更多信息,这对我们有很大帮助。

答案 1 :(得分:12)

错误不是DataBinding包,它是语法错误或逻辑错误。例如,您具有属性" lastName"在您的POJO中,但在布局中android:text="@{user.lastname}"

检查你的"布局"并做重建项目。

答案 2 :(得分:11)

之前,我的软件包名称是“ com.xyz.abc.Models” 将软件包名称更改为所有小写字母“模型”->“模型”

解决了这个问题。

答案 3 :(得分:3)

我对接受的答案感到不满意,因为它告诉您没有提示的堆栈跟踪。

以下是导致此问题的一些可能原因。检查您是否未执行以下任何操作。

基本上Android DataBinding仍然不是成熟。它会失败而没有适当的错误

因此,如果您遇到类似package ch.company.project.databinding does not exist"的问题。

失败的可能原因:

  • 首先逐一检查您的最近编辑过的布局 xml 以查看错误(错误的imports和{{1 }})。通常在这种情况下,我不会得到适当的错误。
  • 检查布局元素中绑定块({...})中的数据绑定语法是否存在错误。在一个布局中工作后,总是重建(不是构建)项目。
  • 检查您的 variables 方法是否具有正确的参数。例如,@BindingAdapter绑定适配器将接受imageUrlImageView作为第一个参数。
  • 在工作完成后,您应该始终重建项目 。在一个布局中。

  • 如果您无法通过上述步骤找到错误,请在

    的编译选项中尝试View

    --debug and --stacktrace

答案 4 :(得分:2)

我的项目遇到了类似的问题

你可以尝试:

  • 检查xml文件以查找导致构建失败的错误
  • 清洁项目
  • 文件 - 使缓存/重启无效

答案 5 :(得分:2)

在我的特定情况下,我使用的是Dagger 2.这个包错误出现在许多类中,与原始错误没有任何关系:依赖注入错误。

快乐提醒:在您的堆栈跟踪上滚动更多内容以了解真正的问题。

答案 6 :(得分:2)

我被同样的错误困扰了几个小时。在尝试了stackoverflow的几种解决方案之后,我用稳定的gradle依赖关系更新了我的项目。

它仍然没有解决,但是在我的另一个项目中,具有相同的gradle依赖项DataBinding可以正常工作。

因此,我使用资源管理器转到项目文件夹,并已删除 2件东西。

  
      
  1. 构建文件夹
  2.   
  3. .idea / libraries中的所有文件
  4.   

此后,我同步了该项目,它继续正常运行。

答案 7 :(得分:1)

我收到了错误:

  

错误:(9,46)错误:包com.company.www.bar.databinding没有   存在。

我只是删除" ="标志 。它对我有用

由此:

 <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="@={()->activity.onButtonClick()}"/>

到:

<Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="@{()->activity.onButtonClick()}"/>

答案 8 :(得分:1)

确保您在布局中引用的模型字段具有public访问修饰符

答案 9 :(得分:1)

更改

{ databinding = true}

buildFeatures{
     dataBinding = true
    
}

答案 10 :(得分:0)

尝试关注Refactor -> migrate to androidx

并在build.grade(:app)

implementation 'androidx.appcompat:appcompat:1.0.0'

implementation 'androidx.databinding:databinding-runtime:1.0.0'

答案 11 :(得分:0)

就我而言,我遵循 android 文档:

buildFeatures {
    viewBinding true
}

使用“=”代替空格

buildFeatures {
    viewBinding = true
}

答案 12 :(得分:0)

包名称必须开始小写字母。否则,绑定库无法理解它是类还是包。此外,您不需要用小写字母来完成所有操作。

示例,错误用法:

package com.programmerbrain.activity.ContactInfo; //Problem is ContactInfo, 'C'.

示例,真正的用法:

package com.programmerbrain.activity.contactInfo; //Solution is contactInfo, 'c'.

答案 13 :(得分:0)

将程序包名称更改为小写。 代替ViewModels 使用视图模型。它对我有用。

答案 14 :(得分:0)

如果您尝试了此步骤

  1. 无效/重新启动
  2. 将此属性保留在gradel.properties中
android.databinding.enableV2=false
android.enableExperimentalFeatureDatabinding=true

并检查所有xml文件看起来不错。 那么您应该使用此解决方案,在项目级别build.gradle中添加以下代码

    allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xmaxerrs" << "1000"
        }
    }
}

这将给您确切的错误,如果您有实际的错误 说明:上面的代码会增加编译错误的大小

答案 15 :(得分:0)

enter image description here

包裹名称应以小写字母开头。 例如,活动是错误的,它将给出错误,而不是重构->重命名活动

答案 16 :(得分:0)

确保您的软件包名称以小写字母开头。 经过两个小时的努力,我的问题解决了

答案 17 :(得分:0)

要摆脱此错误,只需将完整的布局设计包含在activity_main.xml文件中的普通布局标记内。

在浪费了很多时间寻找解决方案后,这对我有用。试一试。