如果没有@Provides注释方法,则无法提供Android Hilt。在存储库接口类中

如果没有@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

我收到此错误错误:[Dagger/MissingBinding]com.eduramza.domain.repositories.RemoteRepository如果没有@Provides注释方法,则无法提供。使用android hilt实现我的存储库接口时

这是因为我的用例实现了我的存储库接口。我的实现可能有什么问题,下面是代码:

app.Viewmodel:

@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
    }