使用@Subcomponent android dagger 2.x无法正常工作

问题描述 投票:0回答:1

在尝试使用Dagger的子组件时,我遇到了一个问题。当我尝试构建这个时,我得到了这个错误。

@ Subcomponent.Builder setter方法必须返回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)

}
android kotlin dagger-2 dagger
1个回答
2
投票

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

abstract class Builder: AndroidInjector.Builder<OnBoardingWelcomeFragment>

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

© www.soinside.com 2019 - 2024. All rights reserved.