gpt4 book ai didi

如果没有 @Provides-annotated 方法,就无法提供 Android Hilt。在存储库接口(interface)类中

转载 作者:行者123 更新时间:2023-12-04 23:43:38 25 4
gpt4 key购买 nike

我收到此错误 错误:[Dagger/MissingBinding] com.eduramza.domain.repositories.RemoteRepository 不能在没有 @Provides-annotated 方法的情况下提供。 使用 android hilt 实现我的存储库接口(interface)时。
那是因为我的 useCase 实现了我的存储库接口(interface)。我的实现可能有什么问题,下面是代码:
应用程序 View 模型:

@HiltViewModel
class RemoteListViewModel @Inject constructor(
private val useCase: GetTickersUseCase
): ViewModel() {
}
域.用例:
class GetTickersUseCase @Inject constructor(
private val remoteRepository: RemoteRepository)
: SingleUseCase<MainCoins> {

override suspend fun executeCall(): Flow<Result<MainCoins>> = remoteRepository.readAllTickers()

}
domain.repository:
interface RemoteRepository {
suspend fun readAllTickers(): Flow<Result<MainCoins>>
}
core.repositoryImpl:
class RemoteRepositoryImpl @Inject constructor(
private val apiService: BraziliexService,
private val tickersMapper: TickersMapper
) : RemoteRepository{

override suspend fun readAllTickers(): Flow<Result<MainCoins>> {
TODO("Not yet implemented")
}
}
核心模块:
@Module
@InstallIn(ActivityComponent::class)
abstract class RemoteModule {

@Binds
abstract fun bindRemoteRepository(
remoteRepositoryImpl: RemoteRepositoryImpl
): RemoteRepository
}
我在这种结构中的多模块应用程序
enter image description here
其中核心实现域,应用程序实现两者。
为什么绑定(bind)方法没有被初始化?
enter image description here

最佳答案

您使用的是 ActivityComponent 但 RemoteRepository 是 ViewModel 的间接依赖项,因此它应该与 ViewModel 生命周期相关联
所以而不是 Activity 组件

@Module
@InstallIn(ActivityComponent::class)
abstract class RemoteModule {

@Binds
abstract fun bindRemoteRepository(
remoteRepositoryImpl: RemoteRepositoryImpl
): RemoteRepository
}
使用这个 View 模型组件
@Module
@InstallIn(ViewModelComponent::class)
abstract class RemoteModule {

@Binds
abstract fun bindRemoteRepository(
remoteRepositoryImpl: RemoteRepositoryImpl
): RemoteRepository
}

关于如果没有 @Provides-annotated 方法,就无法提供 Android Hilt。在存储库接口(interface)类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67411219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com