我有一个带有一个fragment的Activity。我正在尝试注入(inject)fragment,但我得到“没有为com.tsiro.dogvip.login.signin.SignInFrgmt找到注入(inject)器”异常。Activity模块:@Module(includes=BaseActivityModule.class)publicabstractclassLoginActivityModule{@PerFragment@ContributesAndroidInjector(modules=SignInFragmentModule.class)abstractSignI
我是dagger的新手(尽管我在使用Weld开发JavaEEWebApps时有使用DI的经验)。我要做的是将依赖项注入(inject)到一个类中。该字段是私有(private)的。Dagger然后抛出一个异常,说明它不能注入(inject)到私有(private)字段中。这是什么原因?毕竟可以使用反射写入私有(private)字段,即使在android上也是如此。如果我将该字段的可见性设置为私有(private)以外的其他内容,则注入(inject)似乎有效。 最佳答案 Dagger不支持私有(private)字段,但仍支持代码生成
我真的很难理解Dagger2依赖注入(inject)系统。我理解使用@Inject注释告诉Dagger我们需要在这里提供某种类型的实例。但是,我不了解其他组件的各种角色,例如:@Module、@Component、@Provides和它们如何协同工作以向适当的依赖项提供适当的实例。谁能简明扼要地解释一下? 最佳答案 @Module:Modulesareclasseswhosemethodsprovidedependencies,sowedefineaclassandannotateitwith@Module,thus,Daggerw
我之前已经实现了dagger2v2.2,但现在他们也添加了dagger.android部分。所以我正在用它创建示例项目。我知道@Provide和@Modules和@Components等注释的旧方法,但是从Dagger2.8+开始,他们添加了这个android-support库也有一些新的注入(inject),如@ActivityKey、@ContributesAndroidInjector、@Subcomponent.Builder等。所以我的问题是它给桌面带来了什么好处。它是否解决了诸如基类的Inject方法可以适用于所有子类的问题?或任何其他好处?第二个问题-HasFragmen
我的问题类似于this.例如,我有一个LiveData实现:publicclassCustomLiveDataextendsLiveData{@InjectpublicCustomLiveData(@ActivityContextContextcontext){//....}}我想注入(inject)自定义View:publicclassCustomViewextendsView{@InjectSomeApplicationProvideranyProvider;@InjectCustomLiveDatadataProvider;//Getting@com.di.qualifiers.
关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭2年前。Improvethisquestion我知道这可能不是正确的提问方式,但是在阅读了很多内容之后,我仍然对Dagger以及它的工作原理以及我们为什么要使用它感到困惑。由于它已用于我当前的工作项目。请有人用简单的话给我一点提示,Dagger的目的是什么会很有帮助。 最佳答案 Dagger是一个基于Java注解的编译时JSR-330依赖注入(inject)框架。什么是依赖注入(inject)?
使用新的(在2.10中)dagger.android类,我尝试使用依赖于其他模块的子组件来注入(inject)东西,因此,有一个带有这些模块的setter的Builder。https://google.github.io/dagger/android.html上的文档对此进行了描述,但不清楚如何实际编写和/或调用这些setter。引用以上链接:AndroidInjection.inject()getsaDispatchingAndroidInjectorfromtheApplicationandpassesyouractivitytoinject(Activity).TheDispat
既然Worker类是由框架(WorkerManager)创建的,我们如何在Worker中使用@Inject字段? 最佳答案 您必须在要注入(inject)的模块中使用@Provides注释来提供类。首先创建一个包含提供类的模块的组件。@Component(modules={Module.class})publicinterfaceComponent1{voidinject(SyncWorkersyncWorker);}模块类@ModulepublicclassModule{@ProvidespublicISettingReposit
在AndroidStudio3.0Canary4中设置dagger2.x时出现以下错误错误:(71,20)无法解析:com.google.dagger:dagger:2.x错误:(73,20)解析失败:com.google.dagger:dagger-android:2.x错误:(74,20)无法解决:com.google.dagger:dagger-android-support:2.x我的构建文件如下:dependencies{//ForDI-Dagger2implementation'com.google.dagger:dagger:2.x'annotationProcessor
对于“常规”Java项目,在单元测试中用mock/fake覆盖依赖项很容易。您必须简单地构建您的Dagger组件并将其提供给驱动您的应用程序的“主”类。对于Android,事情没那么简单,我已经搜索了很长时间的合适示例,但找不到,所以我不得不创建自己的实现我将非常感谢您的反馈,这是使用Dagger2的正确方法,还是有更简单/更优雅的方法来覆盖依赖项。这里是解释(projectsourcecanbefoundongithub):鉴于我们有一个简单的应用程序,它使用Dagger2和单个模块的单个dagger组件,我们想要创建使用JUnit4的android单元测试,Mockito和Espr