问题标签 [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.
java - Dagger for Android:调用 setContentView 后将 Activity 注入对象图
我想在 Android 上使用 Dagger 将一个实例注入Activity
到另一个类中,如下所示:
我能够进行注射,但所有领域Activity
都null
在注射时。
这是我进行注射的方式:
MyActivity
本身就是一个模块。
这是我的主要模块
还有我Application
的引导对象图的类。
我正在寻找一种在调用setContentView
.
我该怎么做呢?
编辑1:
我让它像这样工作 - 但是我不确定这是否是“正确的方式”。我所做的是
- 将 Activity 传递给
Module
构造函数 - 确保我在完成之后构建,以便
ObjectGraph
将setContentView()
正确的Activity
实例传递给ObjectGraph
.
我Activity
的不再是匕首Module
。
这在代码中转换为以下内容:
这就是我的Activity
样子:
这个解决方案似乎解决了 Jesse Wilson 在这个答案中提出的观点。但是,我担心性能,因为每次创建ObjectGraph
时都会构建。Activity
有什么想法吗?
android - Dagger 在创建图形时抛出 NoSuchMethodException
我使用Dagger作为依赖注入框架。到目前为止它运行良好,但我在使用 Dagger 进行 Android 单元测试时遇到问题,无法弄清楚原因(可能是因为不正确使用 Dagger)。
我有以下异常
产生异常的代码如下:
请注意,模块CSApplication$ProdModule在应用程序的生产版本中使用并且运行良好。
android - Dagger 是否支持 ActivityInstrumentationTestCase2 测试的依赖注入
我正在尝试在继承 ActivityInstrumentationTestCase2 的 Android 功能测试中使用Dagger。
设置代码如下所示:
通过调用 触发的 OnCreate 方法super.getActivity()
不使用 TestModule 提供的类。但是,如果我手动运行我的活动(在测试上下文之外),那么所有适当的类都由我的非测试模块提供/注入。
java - Dagger:POJO 中的字段注入
我从未尝试过 Guide 或其他 DI 库,而是尝试将来自 Square 的 Dagger 用于 Android 应用程序。它适用于 Frgements,但不适用于 POJO。用户指南假定对 DI 有一定的了解,因为它没有更详细地解释。我应该怎么做才能注入restAdapater
我的 POJO。如果我使用相同的代码进行字段注入,它可以在 Fragment 中工作。
//POJO
所有的片段都是从下面派生的,DI 在其中工作得很好。在Eric burke 最近的一次演讲中,他解释说这是必要的,因为 Android 会构造对象。
android - Dagger 在模块上找不到可注入成员
我在 Android 项目中使用Dagger进行依赖注入,并且可以很好地编译和构建应用程序。对象图似乎是正确且有效的,但是当我将 dagger-compiler 添加为依赖项以在编译时获取错误时,它会报告一些奇怪的错误:
Otto 错误看起来像 Eric Burke 在他的Android App Anatomy演示文稿中提到的关于没有@Provides
注释的错误,但正如您在下面看到的那样。
我的 Otto 和 TaskQueue 模块如下:
...
...
android - Dagger 和对提供的类的依赖
我正在“Daggering”我的 Android 应用程序,我面临一个小问题,我不知道是我还是框架的错。如果是我,我会对自己感到非常失望:)
我有以下课程要提供:
使用以下(除其他外)类:
这个类在我的 XmlServiceModule 中是这样引用的:
现在,问题是,注入提供的类是否合法?因为我在 XmlDataReader ctor 上的 @Inject 出现错误:无法注入 public void XmlDataRead(org.xmlpull.v1.XmlPullParser)。
编辑:对不起,伙计们,我的示例代码中有一个错误,但我会保持原样,因为它对于理解下面 Christian 的回答很有用。
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
有谁可以告诉我我做错了什么以及我忘记了什么?
android - 使用 Proguard 和 Dagger 在 Release Build 上的 Android 应用程序崩溃
我是使用 Proguard 和 Dagger for Android 应用程序的新手,所以如果有人能给我一些指示,我将不胜感激。
Proguard 和 Dagger 已在应用程序中实现。通过调试模式(即从 Eclipse 推送)安装应用程序时,运行应用程序没有问题。但是,当我运行应用程序的发布版本时,它会崩溃并显示以下跟踪:
我遵循了以下建议:https: //plus.google.com/108620120050432268974/posts/AAjvwg3Hmgg,在 proguard-project.txt 中实施以下内容:
但这似乎无法解决问题。建议?提前致谢。
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
java - Robolectric 和 Dagger 测试
我正在尝试使用 Robolectric (1.2) 和 Dagger 测试应用程序。
我的测试模块很简单:
包含的 ServiceModule 包括 XmlServiceModule:
一切都很好,我可以在 Eclipse 中调试,直到XmlPullParserFactory.newInstance()被命中。那时,我收到了可怕的消息:
我对 Robolectric 和 Dagger 比较陌生,也许我在实施中做错了什么,我不认为在配置中。我应该检查什么以确保一切正常?你们在这段代码中看到任何明显的错误吗?