使用 @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 不知道如何实现——因此会出现错误。
我在尝试使用 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 不知道如何实现——因此会出现错误。