我試圖用@ContributesAndroidInjector
在我的匕首模塊提供一個類,我看到的錯誤:[ClassName] is not a framework type.
Dagger2 - 「不是框架類型」。錯誤
有誰知道什麼是「框架式」是在何種情況下將一個類不能一?
我試圖用@ContributesAndroidInjector
在我的匕首模塊提供一個類,我看到的錯誤:[ClassName] is not a framework type.
Dagger2 - 「不是框架類型」。錯誤
有誰知道什麼是「框架式」是在何種情況下將一個類不能一?
如果您在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。
在我的情況下,會出現同樣的錯誤,當我以錯誤的方式這樣做,宣佈兩倍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();
}
謝謝!這非常有幫助。 – amitsaurav