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