Dagger和Android上下文限定符

时间:2015-03-20 19:04:17

标签: android dependency-injection inversion-of-control dagger

我最近在我的项目中使用Dagger,同时使用这些示例作为指南:

https://github.com/square/dagger/tree/master/examples

但是我能理解其中的一件事。他们使用@ForActivity@ForApplication限定符来明确区分这些类型的Context,但他们从不在任何依赖项中@Inject它们?怎么了?在这个例子中它是一个忽视吗?如果是这样,那就很容易产生误导。

如何以任何依赖关系注入它们呢? @Inject Dependency dependency会满足吗,它会自己解决正确的类型吗?

1 个答案:

答案 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;