Dagger/Hilt 缺少绑定。没有 @Provides-annotated 方法就无法提供存储库
Dagger/Hilt missing binding. Repository cannot be provided without an @Provides-annotated method
我有这个界面
interface ShowsScheduleRepository {
suspend fun getShowsSchedule(medium: String, timeSlot: String): ShowsSchedule
}
在此class
中提供
class GetShowsScheduleUseCase @Inject constructor(
private val repository: ShowsScheduleRepository
)
来自
@Provides
@Singleton
fun provideShowsScheduleRepository(api: TDRetrofitApi): ShowsScheduleRepository {
return ShowsScheduleRepoImpl(api)
}
然后这个 class 被注入到 viewModel
@HiltViewModel
class HomeFragmentViewModel @Inject constructor(
private val getShowsSchedule: GetShowsScheduleUseCase
) : ViewModel() {
当我尝试构建时出现错误,它无法提供 ShowsScheduleRepository
没有 @Provides-annotated 方法
provideShowsScheduleRepository
方法应该放在模块 class 中(我的意思是 class 用 @Module
注释)。您确定此模块安装在正确的范围内吗?如果没有,请尝试添加 @InstallIn(SingletonComponent::class)
。 (您可以根据需要将 SingletonComponent
替换为 here 描述的任何其他组件)
自我注意事项:将 AppModule 文件放在 HiltEntryPoint 所在的同一个 Android 模块中
我有这个界面
interface ShowsScheduleRepository {
suspend fun getShowsSchedule(medium: String, timeSlot: String): ShowsSchedule
}
在此class
中提供class GetShowsScheduleUseCase @Inject constructor(
private val repository: ShowsScheduleRepository
)
来自
@Provides
@Singleton
fun provideShowsScheduleRepository(api: TDRetrofitApi): ShowsScheduleRepository {
return ShowsScheduleRepoImpl(api)
}
然后这个 class 被注入到 viewModel
@HiltViewModel
class HomeFragmentViewModel @Inject constructor(
private val getShowsSchedule: GetShowsScheduleUseCase
) : ViewModel() {
当我尝试构建时出现错误,它无法提供 ShowsScheduleRepository
没有 @Provides-annotated 方法
provideShowsScheduleRepository
方法应该放在模块 class 中(我的意思是 class 用 @Module
注释)。您确定此模块安装在正确的范围内吗?如果没有,请尝试添加 @InstallIn(SingletonComponent::class)
。 (您可以根据需要将 SingletonComponent
替换为 here 描述的任何其他组件)
自我注意事项:将 AppModule 文件放在 HiltEntryPoint 所在的同一个 Android 模块中