使用 @Subcomponent android 匕首 2.x 不工作

Using @Subcomponent android dagger 2.x not working

我在尝试使用 Dagger 的子组件时遇到问题。当我尝试构建它时出现此错误。

@Subcomponent.Builder setter methods must return void, the builder, or a supertype of the builder. Inherited method: 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)

}

您应该将 AndroidInjector.Factory 切换为 AndroidInjector.Builder 而不是实现 AndroidInjector.Factory.

abstract class Builder: AndroidInjector.Builder<OnBoardingWelcomeFragment>

Factory 接口添加了一个供 dagger.android 使用的方法,您必须自己实现,因为 Dagger 不知道如何实现——因此会出现错误。