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

Наскоро използвах Dagger в моите проекти, като използвах тези примери като ръководства:

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

Но има нещо, което не мога да разбера в тях. Те използват @ForActivity и @ForApplication квалификатори, за да разграничат изрично тези типове Context, но никога не ги @Инжектират в каквато и да е зависимост? какво става с това пропуск ли е в примера?. Ако е така, това е доста подвеждащо.

Как бих могъл да ги инжектирам в някаква зависимост тогава? Ще бъде ли достатъчно @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