问题标签 [dagger-2]

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 投票
1 回答
410 浏览

java - 如何将生成的实现添加到 Dagger 依赖关系图?

我有一个界面

和一个注释处理器,它生成SomeInterface被调用的实现SomeInterfaceImpl

为了使这种类型可用于 Dagger 依赖注入,我将创建以下内容:

问题是我不能SomeInterfaceImpl在我的 ApplicationModule 中使用 use,因为它还不可用,并且将由注释处理器生成。

如何扩展我的注释处理器,以便我可以使用SomeInterfaceDagger 依赖注入并且生成的实现SomeInterfaceImpl将被正确解析?

编辑:

该示例有效,但我想使用另一个注释处理器创建 ApplicationModule 并让处理器以某种方式将 ApplicationModule 集成到匕首图中。@Component(modules={ApplicationModule.class}) 将不存在,因为我不知道在代码中会生成 ApplicationModule。有没有办法将生成的 @Module 类集成到 Dagger Graph 中?请注意,我不想猜测会生成 ABCModule 并将其添加到 @Component。我希望这会以某种方式自动发生。

0 投票
2 回答
9855 浏览

android - Dagger2 生成的类突然从 Android Studio 中消失了

我已经在 Android Studio 中使用 Dagger2 几个月了,但今天它突然停止工作并给我以下错误

这是失败的代码

这是我的毕业信息

这是我的 build.gradle 的内容

任何帮助表示赞赏。

0 投票
3 回答
23402 浏览

android - Dagger2 不生成“Dagger_”文件

我使用 dagger 2 有一段时间了,但今天尝试编译时出现此错误:

错误:(13, 31) 错误:找不到符号类 Dagger_GlobalComponent

错误:(38, 21) 错误:找不到符号变量 Dagger_GlobalComponent

所以这里是代码:

和 gradle 依赖项:

有什么解决办法吗?已经尝试过:清理、重建、更改依赖版本,同时删除 Gradle 缓存并重新安装 Android Studio。

如果它有帮助,这个示例项目也会出现同样的错误:

https://github.com/gk5885/dagger-android-sample

https://github.com/mgrzechocinski/dagger2-example

0 投票
2 回答
13984 浏览

java - Dagger 2 中的作用域

我可能错过了一些东西,但我认为像@Singleton 这样的作用域用于定义“作用域生命周期”。

我在 Android 应用程序中使用 Dagger 2(但我认为问题根本与 android 无关)。

我有 1 个模块:

我有两个不同的@Singleton范围组件:

MenuPresenter和都有LoginPresenter一个@Inject构造函数。虽然 MenuPresenter 需要MailProvider作为参数,但 LoginPresenter 需要一个AccountManager

但是每次我使用组件创建一个MenuPresenterLoginPresenter我都会得到一个新的MailProviderand实例AccountManager。我认为它们在同一范围内,因此应该是一种单例(在同一范围内)。

我是不是完全理解错了。如何在匕首 2 中为多个组件定义一个真正的单例?

0 投票
3 回答
148 浏览

android - 提供方法依赖

在文档中它说 @Provides 方法可能有自己的依赖关系,例如:

如果我这样写会发生什么变化:

在第一个片段中:该方法的泵从何而来?

0 投票
8 回答
7921 浏览

java - 如何配置 IntelliJ/gradle 以使用 dagger 2.0

我有一个 gradle 项目,我想在其中使用 dagger 2.0。不知道如何配置IntelliJ和gradle生成文件让IntelliJ找到?

我的 build.gradle 文件如下所示:

在我的应用程序的构建目录中,该文件DaggerXmlConfigurationComponent存在,这是 Dagger 创建的组件。但我不能在 IntelliJ 中使用它,因为它找不到类。

这不是 Android 应用程序,而是 Raspberry Pi 的应用程序。

0 投票
4 回答
51169 浏览

dagger - Dagger 2 子组件 vs 组件依赖

Dagger 1 的plus()方法是我在以前的应用程序中经常使用的方法,因此我了解您可能希望拥有一个可以完全访问父图绑定的子组件的情况。

在什么情况下使用组件依赖而不是子组件依赖会有好处,为什么?

0 投票
0 回答
543 浏览

android - 使用 MVP 模拟活动 Android 单元测试

我们正在建立一个新的原生 Android 项目,重点关注 TDD,并希望使用 MVP 架构模式来更好地分离我们的代码。随着 Dagger 2 的发布,我们将使用它进行依赖注入。

我们可以实现简单的单元测试,测试演示者的基本逻辑,但是当我们尝试模拟活动(这是我们的观点)时,单元测试会中断。我们认为这是由于演示者本身被注入到活动中,我们正在注入演示者以使用字段注入来管理活动。

所以我真正的问题是在 MVP 中模拟活动的最佳方式是什么?

0 投票
3 回答
3378 浏览

android - 将非活动类添加到 Dagger 2 Graph Android

除了我见过的有限示例之外,我很难理解如何使用 Dagger 2.0。让我们以阅读应用程序为例。在这个阅读应用程序中,有一个用户故事库和登录功能。本示例感兴趣的类别是:

MainApplication.java- 扩展应用程序

LibraryManager.java- 负责在用户库中添加/删除故事的经理。这是从MainApplication

AccountManager.java- 负责保存所有用户登录信息的管理器。可以从 LibraryManager 调用

我仍在努力思考我应该创建哪些组件和模块。到目前为止,我可以收集到以下信息:

创建一个HelperModule提供AccountManagerLibraryManager实例的:

创建一个在其模块列表中MainApplicationComponent列出HelperModule的:

包含@Injects LibraryManager libraryManager在图中MainApplication并将应用程序注入到图中。最后,它查询注入LibraryManager库中的故事数:

注入AccountManager_LibraryManager

但是问题是AccountManager当我尝试在中使用它时它是空的LibraryManager,我不明白为什么或如何解决这个问题。我在想这是因为MainApplication注入到图中的那个没有直接使用 AccountManager,但是我需要如何将它注入LibraryManager到图中吗?

0 投票
2 回答
12109 浏览

android - Dagger 2 和 android Studio:工作但看不到生成的类

我正在尝试在 Android Studio 项目中使用 Dagger 2。我使用了 CoffeeMaker 示例。但是,我设法使应用程序构建并运行:-我没有成功查看生成的代码。- 如果我调试,我也看不到它。- 此外,DaggerCoffeeApp_Coffee 标记为芦苇(无法解析符号)

我的gradle文件是:

谢谢