如果没有@Provides注释方法,则无法提供Android Hilt。在存储库接口类中
我收到此错误错误:[Dagger/MissingBinding]com.eduramza.domain.repositories.RemoteRepository如果没有@Provides注释方法,则无法提供。使用android hilt实现我的存储库接口时 这是因为我的用例实现了我的存储库接口。我的实现可能有什么问题,下面是代码: app.Viewmodel:如果没有@Provides注释方法,则无法提供Android Hilt。在存储库接口类中,android,dependency-injection,interface,repository,dagger-hilt,Android,Dependency Injection,Interface,Repository,Dagger Hilt,我收到此错误错误:[Dagger/MissingBinding]com.eduramza.domain.repositories.RemoteRepository如果没有@Provides注释方法,则无法提供。使用android hilt实现我的存储库接口时 这是因为我的用例实现了我的存储库接口。我的实现可能有什么问题,下面是代码: app.Viewmodel: @HiltViewModel class RemoteListViewModel @Inject constructor( p
@HiltViewModel
class RemoteListViewModel @Inject constructor(
private val useCase: GetTickersUseCase
): ViewModel() {
}
domain.usecase:
class GetTickersUseCase @Inject constructor(
private val remoteRepository: RemoteRepository)
: SingleUseCase<MainCoins> {
override suspend fun executeCall(): Flow<Result<MainCoins>> = remoteRepository.readAllTickers()
}
我的多模块应用程序在此结构中
其中核心实现域,应用实现两者
为什么bind方法没有被初始化
您可以使用ActivityComponent,但RemoteRepository是ViewModel的间接依赖项,因此它应该与ViewModel生命周期绑定 因此,与活动组件相比
@Module
@InstallIn(ActivityComponent::class)
abstract class RemoteModule {
@Binds
abstract fun bindRemoteRepository(
remoteRepositoryImpl: RemoteRepositoryImpl
): RemoteRepository
}
@Module
@InstallIn(ViewModelComponent::class)
abstract class RemoteModule {
@Binds
abstract fun bindRemoteRepository(
remoteRepositoryImpl: RemoteRepositoryImpl
): RemoteRepository
}
使用此ViewModelComponent
@Module
@InstallIn(ActivityComponent::class)
abstract class RemoteModule {
@Binds
abstract fun bindRemoteRepository(
remoteRepositoryImpl: RemoteRepositoryImpl
): RemoteRepository
}
@Module
@InstallIn(ViewModelComponent::class)
abstract class RemoteModule {
@Binds
abstract fun bindRemoteRepository(
remoteRepositoryImpl: RemoteRepositoryImpl
): RemoteRepository
}
您希望
RemoteRepository
提供RemoteRepository
。您需要使用BrazilexService
和TickerMapper
实例来创建RemoteRepository
。另外,是否需要对活动范围进行RemoteRepository
,我想可能是单例范围。请发布所有依赖项的完整dagger代码,并尝试我的答案?是的!ViewModelComponent就是解决方案!谢谢那太好了。。
@Module
@InstallIn(ViewModelComponent::class)
abstract class RemoteModule {
@Binds
abstract fun bindRemoteRepository(
remoteRepositoryImpl: RemoteRepositoryImpl
): RemoteRepository
}