Использование зависимостей уровня активности во фрагментах с dagger2 - PullRequest
0 голосов
/ 21 марта 2019

У меня есть такая структура проекта:

@Component(modules = {AndroidSupportInjectionModule.class, AppModule.class, 
ActivityBinderModule.class})
public interface ApplicationComponent extends AndroidInjector<MyApplication> 
{...}

У меня есть куча зависимостей уровня приложения, определенных в AppModule

@Module
public abstract class ActivityBinderModule {

@ActivityScope
@ContributesAndroidInjector(modules = {MainActivityModule.class, FragmentBinderModule.class})
abstract MainActivity bindMainActivity();
}

У меня есть некоторые зависимости уровня активности, определенные вMainActivityModule, например, FragmentManager

@Module
public abstract class FragmentBinderModule {

@ContributesAndroidInjector(modules = MainPageModule.class)
@FragmentScope
abstract MainPageFragment provideMainPageFragment();
}

У меня есть MainPageFragment конкретные зависимости, определенные в MainPageModule, например DialogFactory (ограничено @FragmentScope), для которого требуется FragmentManager

Я хотел бы использовать экземпляр FragmentManager, предоставленный MainActivityModule в DialogFactory, но я получил ошибку:

FragmentManager cannot be provided without an @Provides-annotated method.

Когда я добавляюпровайдер для FragmentManager в MainPageModule, я получаю эту ошибку:

FragmentManager is bound multiple times: MainActivityModule and MainPageModule

Что я делаю не так?

...