【发布时间】:2022-01-07 14:29:45
【问题描述】:
所以我有 AppModule 和 HomeModule。 我想在 HomeModule 中使用 AppModule 中的应用程序上下文和 AppDatabase。
我收到此错误:AppDatabase cannot be provided without an @Provides-annotated method. public abstract interface HomeComponent
@Singleton
@Component(
modules = [AppModule::class]
)
interface AppComponent {
@Component.Builder
interface Builder {
fun build(): AppComponent
@BindsInstance
fun application(application: Application): Builder
}
}
这是 AppModule:
@Module
class AppModule {
@Provides
@Singleton
fun provideAppDatabase(app: Application): AppDatabase{
return Room.databaseBuilder(
context,
AppDatabase::class.java,
"app_db"
)
.build()
}
}
@Module
如何在 HomeModule 中使用 AppModule 依赖项(在本例中为 AppDatabase 和应用程序)?
@Module
class HomeModule {
@Provides
@Singleton
fun provideHomeDao(appDatabase: AppDatabase): HomeDao {
return appDatabase.homeDao
}
@Provides
@Singleton
fun provideHomeRepository(homeDao: HomeDao): HomeRepository {
return HomeRepositoryImpl(homeDao)
}
}
Home 组件:
@Singleton
@Component(
modules = [HomeModule::class]
)
interface HomeComponent {
fun inject(homeFragment: HomeFragment)
}
【问题讨论】: