Квалификаторы контекста Dagger и Android

Недавно я использовал Dagger в своих проектах, используя эти примеры в качестве руководства:

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

Но есть вещь, которую я не могу понять в них. Они используют квалификаторы @ForActivity и @ForApplication, чтобы явно различать эти типы Context, но никогда не @Inject их в какой-либо зависимости? что с этим делать? это пропуск в примере?. Если это так, то это вводит в заблуждение.

Как мне тогда вводить их в любую зависимость? Будет ли достаточно @Inject Dependency dependency, и он сам определит правильный тип?


person Eduardo Naveda    schedule 20.03.2015    source источник


Ответы (1)


Чтобы внедрить контекст в случае @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;
person jlmd    schedule 20.03.2015