在尝试使用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)
}
您应该将AndroidInjector.Factory
切换到AndroidInjector.Builder
而不是实现AndroidInjector.Factory
。
abstract class Builder: AndroidInjector.Builder<OnBoardingWelcomeFragment>
Factory
接口添加了一个使用dagger.android
的方法,你必须自己实现,因为Dagger不知道如何 - 因此错误。