问题标签 [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 投票
1 回答
11041 浏览

java - Dagger for Android:调用 setContentView 后将 Activity 注入对象图

我想在 Android 上使用 Dagger 将一个实例注入Activity到另一个类中,如下所示:

我能够进行注射,但所有领域Activitynull在注射时

这是我进行注射的方式:

MyActivity本身就是一个模块。

这是我的主要模块

还有我Application的引导对象图的类。

我正在寻找一种在调用setContentView.

我该怎么做呢?


编辑1:

我让它像这样工作 - 但是我不确定这是否是“正确的方式”。我所做的是

  1. 将 Activity 传递给Module构造函数
  2. 确保我在完成之后构建,以便ObjectGraph setContentView()正确的Activity实例传递给ObjectGraph.

Activity的不再是匕首Module

这在代码中转换为以下内容:

这就是我的Activity样子:

这个解决方案似乎解决了 Jesse Wilson 在这个答案中提出的观点。但是,我担心性能,因为每次创建ObjectGraph时都会构建。Activity

有什么想法吗?

0 投票
2 回答
1313 浏览

android - Dagger 在创建图形时抛出 NoSuchMethodException

我使用Dagger作为依赖注入框架。到目前为止它运行良好,但我在使用 Dagger 进行 Android 单元测试时遇到问题,无法弄清楚原因(可能是因为不正确使用 Dagger)。

我有以下异常

产生异常的代码如下:

请注意,模块CSApplication$ProdModule在应用程序的生产版本中使用并且运行良好。

0 投票
2 回答
1004 浏览

android - Dagger 是否支持 ActivityInstrumentationTestCase2 测试的依赖注入

我正在尝试在继承 ActivityInstrumentationTestCase2 的 Android 功能测试中使用Dagger

设置代码如下所示:

通过调用 触发的 OnCreate 方法super.getActivity()不使用 TestModule 提供的类。但是,如果我手动运行我的活动(在测试上下文之外),那么所有适当的类都由我的非测试模块提供/注入。

0 投票
1 回答
2752 浏览

java - Dagger:POJO 中的字段注入

我从未尝试过 Guide 或其他 DI 库,而是尝试将来自 Square 的 Dagger 用于 Android 应用程序。它适用于 Frgements,但不适用于 POJO。用户指南假定对 DI 有一定的了解,因为它没有更详细地解释。我应该怎么做才能注入restAdapater我的 POJO。如果我使用相同的代码进行字段注入,它可以在 Fragment 中工作。

//POJO

所有的片段都是从下面派生的,DI 在其中工作得很好。在Eric burke 最近的一次演讲中,他解释说这是必要的,因为 Android 会构造对象。

0 投票
1 回答
9196 浏览

android - Dagger 在模块上找不到可注入成员

我在 Android 项目中使用Dagger进行依赖注入,并且可以很好地编译和构建应用程序。对象图似乎是正确且有效的,但是当我将 dagger-compiler 添加为依赖项以在编译时获取错误时,它会报告一些奇怪的错误:

Otto 错误看起来像 Eric Burke 在他的Android App Anatomy演示文稿中提到的关于没有@Provides注释的错误,但正如您在下面看到的那样。

我的 Otto 和 TaskQueue 模块如下:

...

...

0 投票
1 回答
1567 浏览

android - Dagger 和对提供的类的依赖

我正在“Daggering”我的 Android 应用程序,我面临一个小问题,我不知道是我还是框架的错。如果是我,我会对自己感到非常失望:)

我有以下课程要提供:

使用以下(除其他外)类:

这个类在我的 XmlServiceModule 中是这样引用的:

现在,问题是,注入提供的类是否合法?因为我在 XmlDataReader ctor 上的 @Inject 出现错误:无法注入 public void XmlDataRead(org.xmlpull.v1.XmlPullParser)。


编辑:对不起,伙计们,我的示例代码中有一个错误,但我会保持原样,因为它对于理解下面 Christian 的回答很有用。

0 投票
1 回答
411 浏览

android - 方法get(类) 在 ObjectGraph 类型中不适用于参数

我试图在我的 android 项目中添加一些依赖注入,所以下面的例子我发现我创建了我的模块

我有我的申请:

和活动

我不确定我做错了什么或错过了什么,但我的日食显示错误:

ObjectGraph 类型中的方法 get(Class) 不适用于参数 (MyModuleModule)

在这一行objectGraph = ObjectGraph.get(new MyModule(this));

当我尝试构建时,我得到:

my.android.app.MyActivity 不需要为 my.android.lib.EventBus 绑定 my.android.app.MyModule

有谁可以告诉我我做错了什么以及我忘记了什么?

0 投票
3 回答
3440 浏览

android - 使用 Proguard 和 Dagger 在 Release Build 上的 Android 应用程序崩溃

我是使用 Proguard 和 Dagger for Android 应用程序的新手,所以如果有人能给我一些指示,我将不胜感激。

Proguard 和 Dagger 已在应用程序中实现。通过调试模式(即从 Eclipse 推送)安装应用程序时,运行应用程序没有问题。但是,当我运行应用程序的发布版本时,它会崩溃并显示以下跟踪:

我遵循了以下建议:https: //plus.google.com/108620120050432268974/posts/AAjvwg3Hmgg,在 proguard-project.txt 中实施以下内容:

但这似乎无法解决问题。建议?提前致谢。

0 投票
1 回答
4720 浏览

android - 使用 Dagger 和 Robolectric 注入服务

我正在尝试TelephonyManager用 Dagger 注入服务。我正在关注这个示例。我扩展了Application该类以创建图形并定义了包含的ApplicationModule位置ServiceModule,并且将来将包含其他模块。

编辑:

现在系统服务被注入到一个Activity没有任何问题的地方。FinderApplication.inject(this)我在里面失踪了Activity。它有一个注入,但在测试中仍然没有注入Robolectric. 我在这篇文章的底部添加了测试用例:

Edit-2: ApplicationModule删除并创建BaseActivity

关于onCreate方法。我得到的错误是:

引起:java.lang.NoSuchMethodException: ServiceModule.()

但是如果我定义一个空的构造函数,当需要注入的类时,我会得到一个空指针。

FinderApplication.java

服务模块.java

SimCardActivityTest.java

0 投票
2 回答
1352 浏览

java - Robolectric 和 Dagger 测试

我正在尝试使用 Robolectric (1.2) 和 Dagger 测试应用程序。

我的测试模块很简单:

包含的 ServiceModule 包括 XmlServiceModule:

一切都很好,我可以在 Eclipse 中调试,直到XmlPullParserFactory.newInstance()被命中。那时,我收到了可怕的消息:

我对 Robolectric 和 Dagger 比较陌生,也许我在实施中做错了什么,我不认为在配置中。我应该检查什么以确保一切正常?你们在这段代码中看到任何明显的错误吗?