Я использую Dagger 2 и работаю, но теперь мне нужен доступ к Контексту приложений Android.Кинжал 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: Не удалось создать приложение: java.lang.IllegalStateException: mainActivityModule должен быть набор
Если я проверить Dagger сгенерированный код этого возбуждается исключение здесь:
public Graph build() {
if (mainActivityModule == null) {
throw new IllegalStateException("mainActivityModule must be set");
}
return new DaggerGraph(this);
}
Я не уверен, что это правильный способ получить инъекцию Context - любая помощь будет принята с благодарностью.
Я не уверен, если инъекционного Контекст применения имеет смысл. Вы можете расширить класс Application и создать статический экземпляр приложения. Вы можете назвать его, например. 'BaseApplication'. После этого вы можете создать метод 'get()' в расширенном классе Application, который вернет этот экземпляр и будет контекстом приложения одновременно. Затем вы можете использовать следующую конструкцию для достижения Контекста приложений из любого места в своем проекте: 'BaseApplication.get()'. Вы должны использовать его осторожно и только тогда, когда это необходимо. –