我正在使用Dagger 2,并使其正常工作,但现在我需要访问Android应用程序上下文。
我不清楚如何注入并访问上下文,我尝试按照以下方式实现:
@Module
public class MainActivityModule {
private final Context context;
MainActivityModule(Context context) {
this.context = context;
}
@Provides @Singleton
Context provideContext() {
return context;
}
}
然而,这会导致以下异常:
java.lang.RuntimeException: Unable to create application : java.lang.IllegalStateException: mainActivityModule must be set
如果我检查Dagger生成的代码,就会在此处引发此异常:
public Graph build() {
if (mainActivityModule == null) {
throw new IllegalStateException("mainActivityModule must be set");
}
return new DaggerGraph(this);
}
我不确定这是否是获取注入上下文的正确方法 - 任何帮助将不胜感激。
BaseApplication
。之后,您可以在扩展的Application类中创建一个get()
方法,该方法将返回该实例并同时是Application Context。然后,您可以使用以下结构从项目中的任何位置访问Application Context:BaseApplication.get()
。您应该谨慎使用它,并且仅在必要时使用。 - Piotr Wittchen