问题标签 [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 回答
1260 浏览

maven - Gradle 依赖项 - com.google.auto:auto-common:1.0-SNAPSHOT

如何在我的 gradle 构建中获得 com.google.auto:auto-common:1.0-SNAPSHOT (传递依赖)来解决?

构建.gradle:

结果:

依赖树:(截断)

我尝试为自动通用添加显式依赖项,但没有成功。

令我惊讶的是,搜索“com.google.auto:auto-common:1.0-SNAPSHOT repository”之类的东西很少。看起来 1.0-SNAPSHOT 根本不在 Maven Central 中。有趣的是,看起来 1.0-SNAPSHOTjboss 的存储库中,但我的 gradle 构建似乎没有找到它。

以前有人见过这样的东西吗?帮助?

0 投票
1 回答
18263 浏览

android - Dagger2 - null 而不是注入的对象

为了简单起见,假设我想将来自 apache 验证器的 EmailValidator 注入到我的活动中:

我有一个 MainModule 类:

和 MainComponent 接口:

当尝试在活动中使用我的验证器时,我得到一个空指针异常:

显然我错过了一些东西。我知道 dagger 为我创建了组件实现。我应该使用它吗?如何?

如果我在 onCreate 方法中执行以下操作:

然后一切正常。

但我希望能够在任何地方(可能在 setter/constructor 而不是字段上)使用 @Inject 注释。

我错过了什么?

我用 dagger1 做了类似的事情,它奏效了。当然,我需要调用ObjecGraph.inject(this)活动。dagger2 等价物是什么?

编辑:

好的,所以我找到了解决方案。如果有人遇到这样的问题,有一些片段:

1)我创建了一个应用程序类:

2) 在 AndroidManifest.xml 中:

3)最后,在我想注入一些组件的活动类中,那两条丑陋的地狱线:

0 投票
0 回答
57 浏览

java - 为了将依赖项注入对象,我必须首先将其注入正确的组件?

因此,如果我有一个要在其中注入一些对象的类,那么首先我必须以某种方式获取应用程序上下文并将该对象注入主应用程序类存储的组件中?

0 投票
1 回答
698 浏览

eclipse - Eclipse 中的 Dagger2 不生成类

我正在尝试使用 Mortar 设置一个新的应用程序。为此,我正在尝试构建迫击炮 HelloWorld 项目。我必须使用 Eclipse,因为 Android Studio 不支持原生调试(我更喜欢 Android Studio 和 Gradle)。

  • 当我按照此处mortar-helloworld所述设置 Dagger1 时,Dagger1的示例在 Eclipse (Ant) 中工作
  • mortar-hellodagger2示例在我使用 Maven 构建时有效
  • 但是,当我尝试mortar-hellodagger2使用 Eclipse (Ant) 构建示例时,我得到一个ClassNotFoundException: com.example.mortar.Dagger_Main_Component.

我确实像 Dagger1 一样设置了 Dagger2 并将库放在这样的文件夹中:

有人用 Dagger2 成功设置了 Eclipse 吗?

0 投票
1 回答
592 浏览

android - Android,Dagger,中间件网络类的依赖注入设计模式

我不太确定如何将其放在一个特定的问题中,但让我尝试一下,我为事先错误的解释或措辞道歉。

我开始专门在 Dagger 2 中学习依赖注入模式并浏览了一些示例。我的目标是注入网络(中间件)类,主要用于测试。到目前为止,我看到的示例是制作 1 个将所有网络作为子类的接口和 1 个模块类来绑定接口,然后 Application 类正在创建一个对象图。这是一种常见的模式吗?

我在想象,假设有 10 个网络类,大多数情况下 1 个屏幕只需要 1 个或几个中间件类。然而,我看到的是在 Application 中注入整个中间件。我可以说通过几行在生产和测试之间切换类似乎很容易,但是在启动应用程序时使用整个网络类制作图表是个好主意吗?

0 投票
2 回答
13832 浏览

android - Dagger v2:将 2 个不同的作用域注入一个对象

我将 moduleA 设置为应用程序范围的单例提供程序,将 ModuleB 设置为与用户相关的对象提供程序

我的用户显示片段将使用系统范围的总线向其他人发送消息并使用用户相关对象进行显示。

问题不能将不同的 scrope 类注入一个对象。使用 component.getX 方法工作正常,但注入是首选方式。错误消息: @UserScope 可能不会引用具有不同范围的绑定:@Provides @Singleton Bus ModuleA.provideBus()

模块 B 作为用户相关的信息提供者

组件设置如下:

0 投票
3 回答
5419 浏览

java - @Inject 字段的空对象

我正在为我的 Android 应用程序遵循 MVC 模式,并且遇到过几次这个问题并且不得不解决它。 当我的应用程序能够使用字段上的@Inject 注释创建注入对象时,该对象@Inject 字段为空,通常会导致崩溃。 例如,我有将处理逻辑和流程的控制器类。任何片段/活动都会回调到它们的控制器以通知用户交互/状态更改。但是,注入的 Controller 实例通常为空。

我将举一个简单的例子来说明。下面,控制器创建了一个注入的活动,然后通过添加一个片段来使用它来启动流程。该依赖关系被处理,但控制器上的活动依赖关系不是(即空)。

处理业务逻辑和流程的简单控制器类:

处理用户交互并回调控制器以执行一些业务逻辑的简单活动:

用于将对象注入图形的简单模块类:

用于提供使用对象的方法的简单组件类:

0 投票
2 回答
409 浏览

android - 是否有像 RoboGuice for Dagger 这样的 Android 库?

我正在将我的应用程序从 RoboGuice 切换到 Dagger。RoboGuice 有这个不错的功能,您可以在其中注入本机组件(@Inject Context mContext 为您提供 Context 对象)。我想知道是否有人知道 Dagger 的扩展或另一个可以做到这一点的 DI 库。谢谢!

0 投票
1 回答
2828 浏览

java - Dagger 没有初始化 Lazy惰性变量?

我正在使用 Java 和Dagger依赖注入框架。我经常遇到必须初始化一个类但稍后使用的情况,例如:

我希望该消息在第一次被请求时被初始化,并且从那一刻起始终在此类中使用相同的消息实例。我怎样才能做到这一点?

编辑:

我尝试按如下方式使用Lazyundefined但lazyMessage 是:

这是我的 dagger2 配置:

如何让 dagger 实例化lazyMessage?

0 投票
3 回答
2602 浏览

java - 我可以使用某种带有 Dagger 的辅助 Inject 吗?

使用 Google Guice 或 Gin,我可以指定不受依赖注入框架控制的参数:

辅助参数stage是在创建实例时指定的SomeEditor

SomeClassA 的实例取自对象图,而 SomeClassB 的实例取自运行时的调用者。

在 Dagger 中有类似的方法吗?