Używam Dagger 2 i działa, ale teraz potrzebuję dostępu do kontekstu aplikacji Android.Sztylet 2 wstrzykuje kontekst Androida
Nie jest dla mnie jasne, jak wstrzyknąć i uzyskać dostęp do kontekstu. Próbowałem to zrobić w następujący sposób:
@Module
public class MainActivityModule {
private final Context context;
MainActivityModule(Context context) {
this.context = context;
}
@Provides @Singleton
Context provideContext() {
return context;
}
Jednak wynika to w następujący wyjątek:
java.lang.RuntimeException: Nie można utworzyć aplikację: java.lang.IllegalStateException: mainActivityModule musi być ustawić
Gdybym skontrolować Dagger wygenerowany kod ten jest wyjątek tutaj:
public Graph build() {
if (mainActivityModule == null) {
throw new IllegalStateException("mainActivityModule must be set");
}
return new DaggerGraph(this);
}
Nie jestem pewien, czy to jest właściwy sposób na wstrzyknięcie Kontekstu - każda pomoc będzie bardzo ceniona.
Nie jestem pewien, czy wstrzykiwanie Kontekst aplikacji ma sens. Możesz rozszerzyć klasę aplikacji i utworzyć statyczną instancję aplikacji. Możesz nazwać go np. 'BaseApplication'. Następnie możesz utworzyć metodę get() w rozszerzonej klasie aplikacji, która zwróci to wystąpienie i będzie kontekstem aplikacji w tym samym czasie. Następnie możesz użyć następującej konstrukcji, aby dotrzeć do kontekstu aplikacji z dowolnego miejsca w projekcie: 'BaseApplication.get()'. Powinieneś używać go ostrożnie i tylko wtedy, gdy jest to konieczne. –