我最近在我的项目中使用Dagger,同时使用这些示例作为指南:
https://github.com/square/dagger/tree/master/examples
但是我能理解其中的一件事。他们使用@ForActivity
和@ForApplication
限定符来明确区分这些类型的Context
,但他们从不在任何依赖项中@Inject它们?怎么了?在这个例子中它是一个忽视吗?如果是这样,那就很容易产生误导。
如何以任何依赖关系注入它们呢? @Inject Dependency dependency
会满足吗,它会自己解决正确的类型吗?
答案 0 :(得分:4)
要在@ForActivity案例中注入上下文,您必须:
@Inject @ForActivity Context context;
这是一篇解释它的帖子:https://stackoverflow.com/a/27343567/3929577
与@Named注释相同的结果。
您可以在模块中使用它:
@Provides @Singleton @Named("foractivity") Context provideActivityContext() {
return activity;
}
然后使用:
@Inject @Named("foractivity") Context context;