我有一个使用匕首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结尾的名称的组件非常令人困惑)

09-09 16:56