Использование @Subcomponent Android Dagger 2.x не работает - PullRequest
0 голосов
/ 10 апреля 2019

Я столкнулся с проблемой при попытке использовать подкомпонент Кинжала.Когда я пытаюсь построить это, я получаю эту ошибку.

@Subcomponent.Builder Методы установки должны возвращать void, компоновщик или супертип компоновщика.Унаследованный метод: create (T).

Кто-нибудь знает, что я здесь не так делаю?

Спасибо.

@FragmentScope
@Subcomponent(modules = [OnBoardingWelcomeFragmentModule::class])
interface OnBoardingWelcomeFragmentComponent: AndroidInjector<OnBoardingWelcomeFragment> {

  @Subcomponent.Builder
  interface Builder: AndroidInjector.Factory<OnBoardingWelcomeFragment>


}

@Module
open class OnBoardingWelcomeFragmentModule {

  @Provides
  @FragmentScope
  fun provideUI() = OnBoardingWelcomeFragmentUi()

  @Provides
  @ViewModelForDagger
  fun providesViewModelForDagger(sharedPrefsStorage: SharedPrefsStorage): OnboardingViewModel =
    OnboardingViewModel(sharedPrefsStorage)

  @Provides
  fun providesViewModelFactory(@ViewModelForDagger
                               viewModel: Lazy<OnboardingViewModel>): ViewModelFactory<OnboardingViewModel> =
    ViewModelFactory(viewModel)

}

1 Ответ

2 голосов
/ 10 апреля 2019

Вы должны переключить AndroidInjector.Factory на AndroidInjector.Builder вместо этого, который реализует AndroidInjector.Factory.

abstract class Builder: AndroidInjector.Builder<OnBoardingWelcomeFragment>

Интерфейс Factory добавляет метод для dagger.android, который вы должны реализовать самостоятельно.Так как Кинжал не знает как - отсюда и ошибка.

...