我有一个使用匕首2的子组件模块。
@Subcomponent(modules = arrayOf(LoginPageActivityModule::class))
class AuthModule {
@Provides
internal fun provideAuthDataManager(appDataManager: AppDataManagerImpl): AuthRepository {
return AuthRepository(appDataManager)
}
@Subcomponent.Builder
internal interface Builder {
fun requestModule(module: AuthModule): Builder
fun build(): AppComponent
}
}
我想将其添加到另一个模块中-
@Module(subcomponents = arrayOf(AuthModule::class))
class LoginPageActivityModule {
@Provides
internal fun provideLoginPageViewModel(dataManager: LoginRepository,authDataManager: AuthRepository): LoginPageViewModel {
return LoginPageViewModel(dataManager,authDataManager)
}
}
当我这样做时,我遇到了这个问题-
没有参数的@ Subcomponent.Builder方法必须返回
@Subcomponent类型或@Subcomponent public的超类型
抽象com.lola.AppComponent build();
如何声明工厂或制造商?
最佳答案
您应该返回AuthModule
,因为这是组件的名称。
尽管我想您在这里输入了一些错误的名称,但您可能想将该组件称为AppComponent
。 (调用以-module结尾的名称的组件非常令人困惑)