2017-11-10 181 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(); 
} 
相關問題