数据绑定失败并显示“无法猜测”

新手上路,请多包涵

自从更新到 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“猜测”成功?

原文由 Martin Zeitler 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 521
2 个回答

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'

最有可能需要 androidx.fragment.app.Fragment 而不是 android.support.v4.app.Fragment 以数据绑定 a Fragment 使用编译器默认数据绑定 v– 数据绑定这也只是一个临时解决方案——但仍然比恢复到 v1 数据绑定编译器要好。


更新

由于 com.android.tools.build:gradle:3.5.0 以上解决方法不再有效;必须重构 XML 文件。当不将任何 class="" 属性添加到 <data /> 标签中并将此标签添加到任何现有的 <layout> 标签中时,效果最佳。 Duplicate id on data-bound <include> tags may also prevent the generation (the id has to be set on the <include> tag, not在包含的布局中)。

原文由 Martin Zeitler 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

原文由 Muhammad Noman 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题