Dagger 和数据绑定
Dagger and databinding
我有一个 MVVM 项目,其中我有 ViewModel classes 扩展 BaseObservable。现在,如果将 @Inject class 放入我的 ViewModel,则编译会失败并出现许多错误,例如:"error: package xxx.databinding does not exist"
我可以使用某种 gradle 技术找到导致此问题的实际错误吗? @Inject 真的支持数据绑定吗?
编辑:
代码与https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding/
完全一样
因为我添加了 dagger,我正在尝试将存储库 @Inject 到扩展 BaseObservable 的视图模型中。一旦我将@Inject 添加到视图模型中,我就无法编译
Dagger 使用数据绑定,您的设置有问题。
当您得到 error: package xxx.databinding does not exist
时,这意味着代码生成失败,并且由于数据绑定和 Dagger 都使用代码生成问题,因此这两个组件的设置可能存在问题。
根据你的描述,你似乎没有正确配置匕首,即没有设置它应该如何提供你正在注入的对象。
执行了 "satisfying dependencies" 和 "building the graph" 下的操作
解决此类问题的一般方法是找出不与数据绑定相关的错误。一旦这些问题得到修复,您的数据绑定错误就会消失。数据绑定只是大声抱怨,因为构建在它可以做它的事情之前就失败了。不幸的是,这常常感觉像是大海捞针。
如果您有很多错误,您可能需要增加显示的最大错误计数,否则错误输出可能会在打印实际根本原因之前结束。看这里:
Dagger 的 @Inject
通常与数据绑定兼容。
如 Uli 所述,这是由于编译器限制了显示错误的数量。
这样做:
1。通过执行以下操作增加显示的错误限制
将此代码段添加到 android 块内的子模块 gradle 文件中。
kapt {
javacOptions {
// Increase the max count of errors from annotation processors.
// Default is 100.
option("-Xmaxerrs", 1000)
}
}
2。找出与绑定无关的错误并修复它们。
即(修复 app/src/.. 文件夹中的错误并忽略 app/build/generated/.. 中与绑定相关的错误)
我有一个 MVVM 项目,其中我有 ViewModel classes 扩展 BaseObservable。现在,如果将 @Inject class 放入我的 ViewModel,则编译会失败并出现许多错误,例如:"error: package xxx.databinding does not exist"
我可以使用某种 gradle 技术找到导致此问题的实际错误吗? @Inject 真的支持数据绑定吗?
编辑:
代码与https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding/
完全一样因为我添加了 dagger,我正在尝试将存储库 @Inject 到扩展 BaseObservable 的视图模型中。一旦我将@Inject 添加到视图模型中,我就无法编译
Dagger 使用数据绑定,您的设置有问题。
当您得到 error: package xxx.databinding does not exist
时,这意味着代码生成失败,并且由于数据绑定和 Dagger 都使用代码生成问题,因此这两个组件的设置可能存在问题。
根据你的描述,你似乎没有正确配置匕首,即没有设置它应该如何提供你正在注入的对象。
解决此类问题的一般方法是找出不与数据绑定相关的错误。一旦这些问题得到修复,您的数据绑定错误就会消失。数据绑定只是大声抱怨,因为构建在它可以做它的事情之前就失败了。不幸的是,这常常感觉像是大海捞针。
如果您有很多错误,您可能需要增加显示的最大错误计数,否则错误输出可能会在打印实际根本原因之前结束。看这里:
Dagger 的 @Inject
通常与数据绑定兼容。
如 Uli 所述,这是由于编译器限制了显示错误的数量。
这样做:
1。通过执行以下操作增加显示的错误限制
将此代码段添加到 android 块内的子模块 gradle 文件中。
kapt {
javacOptions {
// Increase the max count of errors from annotation processors.
// Default is 100.
option("-Xmaxerrs", 1000)
}
}
2。找出与绑定无关的错误并修复它们。
即(修复 app/src/.. 文件夹中的错误并忽略 app/build/generated/.. 中与绑定相关的错误)