2017-11-10 150 views

回答

2

如果您在the documentation看看它说,

This annotation must be applied to an abstract method in a Module that returns a concrete Android framework type (e.g. FooActivity, BarFragment, MyService, etc).

你可以用碎片,活动,服务或应用程序中使用。你可以用而不是用它来创建具有任意对象的任意模块。你应该尽可能使用构造函数注入,并且在注释方法不是的地方使用@Provides

字段注入是为(Android)框架类型保留的,如果您可以使用上述两种方式提供对象,则不应使用该字段。

我建议你再看一下Dagger 2文档或者一些教程,以获取关于如何提供对象的更多信息。您还可以找到关于我自己的博客文章the Dagger Basics

+0

谢谢!这非常有帮助。 – amitsaurav

0

在我的情况下,会出现同样的错误,当我以错误的方式这样做,宣布两倍NotificationsModule,而不是活性增加:

@Module 
public abstract class ActivityBindingModule { 
    @ActivityScoped 
    @ContributesAndroidInjector(modules = NotificationsModule.class) 
    abstract NotificationsModule notificationsModule(); 
} 

导致循环依赖。正确的方法:

@Module 
public abstract class ActivityBindingModule { 
    @ActivityScoped 
    @ContributesAndroidInjector(modules = NotificationsModule.class) 
    abstract NotificationsActivity notificationsActivity(); 
} 
相关问题