问题标签 [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.
android - 如果没有 @Provides-annotated 方法,就无法提供上下文,但它是吗?
我有以下简单的模块:
以及相应的简单组件:
我在这里创建组件:
它在编译时抛出此错误:Error:(22, 13) error: android.content.Context cannot be provided without an @Provides-annotated method
,但如您所见,它带有注释@Provides
。
这真的很奇怪,因为当我取消限定符注释时问题就消失了。
以防万一,这是我的@ForApplication
限定词:
这实际上是一个教科书 Dagger2 示例。我究竟做错了什么?
java - Dagger2:用组件本身注入模块提供的实现类
考虑到模块都是通过 Dagger1 规范相互共享的,您可以通过构造函数参数complete=false, library=true
接收方法提供的元素,如下所示。@Provides
但是,您也可以仅指定一个包含组件图的依赖项(thePresenter
或CustomApplication
实例),并使用该组件图来注入您的实现类。
这样,您只需要依赖演示者的对象图,而不必弄乱构造函数参数。
哪个是更好的方法?
编辑:我在一个不太好的重构项目中的一个更清晰和具体的例子如下:
然后
然后
问题:这样,当注入器准备好时,所有依赖项都由应用程序的组件提供,而不是通过构造函数提供。但这是一个好方法吗?从长远来看,是否有任何警告?
EDIT2:我在这里有注射器,但它很糟糕。
java - Dagger 2:注入提供的类
再次理解 Dagger 的工作原理时遇到了一些麻烦,这次是用一些代码。
我有几个类和它们各自的接口
和一个大致类似的组件
那么,在所有注入正确发生的情况下,我还需要创建一个SomeView
via实例吗?getSomeView
我试图拥有一个@Module(includes = DataModule.class)
那个@Provides ISomeView provideISomeView()
(或者,provideISomeView(IDataProvider dataProvider)
至少确实DataProvider
在所述方法中给了我一个正确的实例),但无论我尝试什么,如果IDataProvider
不手动设置模块中的字段甚至在SomeManager
构造函数本身——这使得那里的陈述@Inject
变得毫无意义。
java - Dagger2 module: how to obtain context to pass to the constructor of a class I want to provide
First time using Dagger2.
In my android application I have a MyApplication class that extends Application. I also have an ImageAssistant class that is a collection of related image-processing methods. In my MyApplicaiton class I used to instantiate an ImageAssistant for all the activities to use.
Now I am trying to make it work with Dagger2, but I dont know how to pass a context in the module that provides ImageAssistant
This is how my code looked:
Now, enter Dagger 2, here is what I have
in package .modules:
EDIT: This is how my module looks now, but I still dont know how to tie everything together:
And this is the AppComponent:
android - Dagger 2 注入 Android 应用程序上下文
我正在使用 Dagger 2 并且可以正常工作,但是我现在需要访问Android Application Context。
我不清楚如何注入和访问上下文。我试图这样做如下:
但是,这会导致以下异常:
java.lang.RuntimeException:无法创建应用程序:java.lang.IllegalStateException:必须设置 mainActivityModule
如果我检查 Dagger 生成的代码,则会在此处引发此异常:
我不确定这是否是注入 Context 的正确方法 - 任何帮助将不胜感激。
android - Dagger 2 - 无法注入对象
我试图在 Android 应用程序中做一个非常简单的依赖注入。我使用 dagger 2 作为 DI 工具。
问题是没有发生注入:
这是我的代码:
//看到 Motor.java 的所有敬畏。
这是使用电机类的 Vehicle.java:
然后我创建了一个 VehicleModule.java 类来定义我的提供者:
然后我有一个带注释的接口组件,定义如下:
这是我应该注入的Android mainactivity 类,但它不是,任何人都可以帮忙:
我在车辆上得到一个空指针异常:
顺便说一下,我的 gradle 依赖项如下所示:
java - 在 Gradle 的 Java 插件的 compileTestJava 中找不到 Dagger 2 的 Component 生成的类
好吧,我正在迁移我的 Android 项目以使用清洁架构:
https://github.com/android10/Android-CleanArchitecture
这意味着我的部分代码在域模块中(纯 Java,不依赖于 Android)。对于这个项目,我使用的是 Dagger 2,它使用注释处理器(在编译时)生成源代码。
我的项目有以下 Gradle 配置:
在我的测试源中,我创建了接口 TestComponent 并且 Dagger 应该生成 DaggerTestComponent。当我尝试通过命令行或 Android Studio 构建我的项目时,我收到了找不到符号的编译错误,然后:Execution failed for task ':domain:compileTestJava'。
我试图用'compile'和'testCompile'来改变'provided'。它仍然无法正常工作。
奇怪的是,在 compileTestJava 失败后,我可以在domain/build/classes/test中找到生成的 DaggerTestComponent.java 。那么,如果它正在生成,为什么我会收到这个编译错误?
需要注意的是,这个问题只发生在测试源中。我已经生成了主要源代码中使用的 Dagger 2 的源代码。
更新:
我评论了每个尝试使用 DaggerTestComponent 并尝试再次构建的地方。在domain/build/classes/test中,现在我不仅可以找到 DaggerTestComponent.java ,还可以找到 .class 编译结果。因此,它正在生成源文件并对其进行编译。为什么使用它编译文件不起作用?这似乎是一些顺序问题,比如在编译其他源时生成的源还没有准备好。
dagger-2 - 如何包含库 .h 文件
我已经从简单的 Dagger-2 代码中成功生成了 Objc .m 和 .h 文件。
https://gist.github.com/OscarRyz/ffd976fcae9acf87dbe1
现在我正在尝试使用编译这些文件,j2objcc
但错误消息说它找不到 Dagger-2 类的 .h:
问题:这是否意味着我需要在生成 ObjC 代码时拥有库源代码,以便也可以生成那些的 .h?
android - Dagger 2 - 每个活动与 application.java 中添加到图形中的模块
将模块添加到 application.java 文件中的对象图是否明智?还是应该只在每个活动中添加它们?
例如,在一个活动类中,假设我们已经有一个车辆模块,但它没有添加到对象图中。然后我们 c 可以在 onCreate 中执行以下操作:
然后,这会将车辆模块添加到图中,然后我们可以@inject
在名为车辆的变量上使用注释。
这与在 application.java 文件中执行相同的调用形成对比。前者不是记忆力更好吗?
java - url的java注释 - 什么是用例?
我试图弄清楚在我继承的代码中创建的注释的作用。
这是每个代码的注释定义:
然后使用 dagger 2(android 的依赖注入框架),它的使用如下:
我更关心@BaseUrl 注释。在这种情况下它做了什么?
该项目使用改造。