12

自 Android Studio 更新以来,3.2.0我面临以下问题:

任务 ':mobile:dataBindingGenBaseClassesDebug' 执行失败。

> 无法猜测 com.ACME.database.model.Order

也看到了这个答案,它暗示“包名必须以小写字母开头”。

...看起来很相似,好像这个variable任务是原因:

<data class=".databinding.OrderFragmentBinding">
    <variable name="order" type="com.ACME.database.model.Order"/>
    ...
</data>

发现:绑定类的新数据绑定编译器,没有解释行为的变化。

:这样的分配是否也受该命名约定的影响?我的意思是,是否有机会(除了更改大写包名)使数据绑定 v2“猜测”成功?

4

11 回答 11

32

这是因为您使用数据绑定的类名或包名。这些类(使用数据绑定)必须以大写字母开头,包以小写字母开头。

于 2019-08-28T02:13:51.033 回答
12

有类似的问题。通过以大写字母开头重命名数据类来解决。

于 2019-06-11T22:45:00.843 回答
10

do中的这些设置gradle.properties启用androidx数据绑定编译器:

android.databinding.enableV2 = false
android.enableExperimentalFeatureDatabinding = true

通过获取的包可以看到:

Download https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler/3.2.0/databinding-compiler-3.2.0.pom
Download https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler/3.2.0/databinding-compiler-3.2.0.jar

它抱怨:

WARNING: The option setting 'android.databinding.enableV2=false' is experimental and unsupported.
The current default is 'true'

WARNING: The option setting 'android.enableExperimentalFeatureDatabinding=true' is experimental and unsupported.
The current default is 'false'

为了使用默认的 v2 数据绑定编译器对a 进行数据绑定,最有可能需要androidx.fragment.app.Fragment使用not。这也只是一个临时解决方案——但仍然比恢复到 v1 数据绑定编译器要好。android.support.v4.app.FragmentFragment


更新

由于com.android.tools.build:gradle:3.5.0上述解决方法不再起作用;必须重构 XML 文件。在不将任何class=""属性添加到<data />标签中时效果最佳 - 并且将此标签添加到任何现有<layout>标签中。id数据绑定标签上的重复<include>也可能会阻止生成(id必须在<include>标签上设置,而不是在包含的布局中)。

于 2018-09-25T00:36:51.577 回答
5

更新到 3.2 后发生同样的事情(迁移前的工作应用程序,并且没有代码更改)......然后这个“猜测”问题即使我在包名称的第一个字母中有小写字母!

<data>
   ...
   <variable name="rule" type="com.gta.viewmodels.vmRule"/>
   ...
</data>

所以我“猜想”你的问题仍然存在,即使你更新了包名称(无论如何这是最佳实践,因为每次升级 Android Studio 时都会出现问题!)。

无论如何,我通过降级gradle.properties中的 v2 数据绑定来解决(你会得到一个“不支持”的警告,但忽略它):

android.databinding.enableV2=false

看起来 Android Studio PG 并没有很好地测试这个断言(这里):

Data Binding V2 is now enabled by default and is compatible with V1.

于 2018-09-24T23:39:55.787 回答
5

您将遇到此错误的情况:

<data>
    <variable
        name="something"
        type=""/>
</data>

空类型或未定义类型

于 2020-07-17T11:13:14.830 回答
3

我遇到了这个问题,因为 1.my viewmodel 类没有从 BaseObservable 扩展

  1. 我的包名以大写字母开头
于 2019-09-10T10:00:27.400 回答
1

我得到了这个错误,它通过将clickhandler类名的第一个字母更改为大写来解决我将这个:clickHandler改成这个ClickHandler com.packagename.android.activity.AddAddressActivity。点击处理程序

于 2020-04-30T09:35:05.937 回答
1

万一上述方法不起作用,请检查您引用的类类型是否在同一个模块中,或者在 xml 所在模块所依赖的模块中。

于 2020-07-17T20:51:54.377 回答
1

就我而言,这只是类型变量 XML 文件中的错误路径

<data>
        <variable
            name="clickListener"
            type="com.example.liberdade.caixa.CaixaListener" />
于 2020-08-02T20:49:59.047 回答
0

我的情况是我在小字母中使用类名(propertyModel)应该是(PropertyModel)

于 2021-05-04T11:36:42.527 回答
-2

如果您的包裹以大写字母开头,请将其更改为小,它将解决问题。

于 2021-08-17T13:44:08.657 回答