问题标签 [dagger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
31663 浏览

android - Dagger 和 ButterKnife Android 的区别

谁能指出DaggerButterknife之间的区别?我知道 Butterknife 是一个视图注入库,而 Dagger 是一个依赖注入库。但是在线文档对我来说似乎有点开销。根据 Butterknife 文档,您也可以进行非活动注入,这是 Dagger 所做的吗?还是我误会了什么?

0 投票
1 回答
2508 浏览

android - 具有继承关系的应用程序类的 Dagger 模块

我在 Android 应用程序中使用 Dagger 进行依赖注入。

我有 2 个应用程序类,我们称它们为 A 和 B。B 扩展 A 扩展android.app.Application

A 具有任何应用程序通用的职责和依赖关系。B 具有特定于当前应用程序的职责和依赖关系。

我希望能够拥有 2 个模块,AModule并且BModule,A 使用前者注入自身,B 使用后者注入自身。

问题是似乎BModule必须在编译时引用 A 的类,否则会引发运行时错误。所以这就是BModule避免错误的样子(注意injects注释字段的值):

但我宁愿BModule只知道B,像这样:

当我这样做时抛出的错误实际上表明被注入的实例 (A) 不是BModule已知负责注入的类。

有没有办法实现这一点,不会产生运行时错误?

谢谢!

0 投票
1 回答
6182 浏览

android - Dagger - 类没有可注入的成员

我正在尝试将 Dagger 集成到我的应用程序中。我遇到了一个问题。我在运行时收到此错误:

我尝试寻找其他类似的答案,但到目前为止没有任何帮助...

与图构建相关的所有内容都非常类似于Android Activity Graphs示例中的实现。

我有两个模块ActivityModuleApplicationModule.

还有一个

我究竟做错了什么?

更新:
添加更多细节:

分段:

导航控制器:

0 投票
1 回答
5150 浏览

android - 在 AAR 中使用 Dagger(或其他 DI IoC 容器)的任何示例?

你有一个基于 Gradle 的简单 DI 示例吗?我需要看到用于表达可选依赖的 setter 注入,就像标准设计模式一样。谢谢

编辑为了更好地定义 Q 的上下文...我已经在 Google Play https://play.google.com/store/apps/details?id=org.new_year上有我的 apk -OpenTweetSearch-

我想将我的 Twitter OAuth 2.0 与 Google Drive SDK OAuth 2.0 集成。我在这里找到了 Google Drive SDK 的 Gradle 依赖项:https : //gist.github.com/johnscheible/5994719排除了传递依赖项。“然而,exclude 感觉就像是应用程序开发人员可能需要但理想情况下避免的那种东西”(请参阅​​ Gradle for Android、AARs 和 Conditional Dependencies)。这就是为什么在 Google Drive SDK 的上下文中要求 gradle 和依赖注入的代码示例:这也足够了,并且 c# .net WPF 中的示例可以帮助我。无论如何,代码示例不是我问题的重点,您可以在没有任何代码示例的情况下回答:实际上是设计模式是您应该在代码实现之前讨论的内容,并且应该在与构建系统层分开的抽象层中进行管理。所以我不明白为什么我的 Q 被搁置,因为我的 Q 不是重点。

0 投票
1 回答
4921 浏览

java - 使用 Dagger 将依赖项注入单例?

是否可以让 Dagger 为您注入单例?

就目前而言,我只找到了一种手动向单例提供依赖项的方法:

这是定义单例的唯一方法吗?我更喜欢做如下的事情,这样 Dagger 就会自己注入依赖项,但是这样做会给我一个错误。

也许还有另一种定义单例的方法,可以让我将其他单例注入其中?

任何帮助表示赞赏。

编辑: 我刚刚意识到我正在使用另一个 Singleton 执行第二种方法,但是情况略有不同,因为我将实现映射到接口:

TrackerImpl 也被注入了上面提到的 PPreferences 的一个实例。

当我尝试使用第二个示例创建 Dispatcher 时,这是我得到的错误:

0 投票
1 回答
1525 浏览

android - 是否可以在库项目中使用 Dagger?

我有一个工作和图书馆项目。工作项目中使用了 Dagger,前几天我决定在库项目中也使用 Dagger。我为库项目配置了 Eclipse Java 编译器和注释处理设置,添加了所需的 Dagger 和 JavaWriter JAR,在库项目中标记了一个模块。现在两个项目都没有任何错误。

但是当我尝试在 Android 设备上运行应用程序时,它会崩溃:

我认为这是因为在库项目中 .apt_generated 文件夹是空的!Dagger 不会为库项目生成类。可能有一些 IDE/项目配置错误。但是在工作和图书馆项目中都做准确的配置,不知道有什么问题。

所以我的问题是:是否可以在 Android 库项目中使用 Dagger?启用代码生成的正确 Eclipse 配置应该是什么?

提前致谢。

编辑:我创建了一个新的干净库项目,为 Dagger 设置它并从旧的复制所有源文件。此时,新项目中的所有内容都按预期工作。奇怪的事情!

0 投票
3 回答
4351 浏览

java - Dagger:注入一个类的不同实例

我可以使用Dagger将不同的值注入到对象图中深处的同一类的多个实例中吗?我想避免通过图中的包含对象传递值(这样我就可以更改包含对象的实现而不影响它们的容器)。

这是一个人为的例子。对象图是一个 Top,它包含一个 Left 和 Right,每个都包含一个 Show。所以有两个 Show 实例。

我可以使用 Dagger 向 Top.left.leaf.label 和 Top.right.leaf.label 注入不同的值吗?

这是一个尝试。这是不能令人满意的,因为 Left 和 Right 依赖于 Leaf 的实现。我想在不涉及 Left 或 Right 的情况下注入 Show.label。

0 投票
2 回答
2527 浏览

java - 如何用匕首注入匿名内部类?

可以注入匿名类吗?我遇到以下错误:

java.lang.IllegalArgumentException:没有为 members/com.acme.MyFragment$1 注册注入。您必须将其显式添加到您的模块之一中的“注入”选项中。

例子:

0 投票
1 回答
8478 浏览

android - 在 Android 上使用 DI 的具体好处是什么?

使用适用于 Android 的依赖注入框架(如DaggerTransfuseRoboGuice )有哪些具体好处或优势?

例如,什么样的应用程序最能从使用 DI 中受益?是否有更多的性能优势,或者更多的是扩展应用程序的便利性,或者更多的是使其可测试?

提出这个问题的原因之一是衡量我正在开发的应用程序是否真的会从中受益。由于我打算让应用程序在某些时候变得严肃,因此可测试性和易于扩展性会很好,即使第一个版本的使用成本很高(更多的设置时间、学习曲线等)。

谢谢!

0 投票
2 回答
4518 浏览

android - Dagger 模块包含周期

我对 Dagger 还很陌生,并试图掌握一些东西。我想将我的模块分成逻辑组,每个组都提供自己的功能,但基本上就像在一个模块中一样。

例如,假设我的主应用程序模块定义如下:

我有另一个像这样定义的模块,它设置一个 ErrorReporter 接口并为其提供具体实现。

在我的 Application 类中,我像这样设置对象图:

当我运行匕首编译器时,我得到如下信息:

我在这里做错了什么?我认为它与includes/addsTo 有关,但是当我删除这些时,我会遇到其他错误。

如果我从 MyAppModule 中删除 includes = AnalyticsModule.class 我会得到如下信息:

如果我完全放弃 AnalyticsModule,然后将提供的错误报告器交给 MyAppModule,一切都很好,但是我必须公开我的具体 impl 类,以便我可以在其他模块中使用它。