gpt4 book ai didi

android - Dagger 柄 : cannot be provided without an @Provides-annotated method

转载 作者:行者123 更新时间:2023-12-04 16:38:18 28 4
gpt4 key购买 nike

当我在 View 模型中使用如下界面时

class MainViewModel @ViewModelInject constructor(
private val trafficImagesRepository: TrafficImageRepository, <----------------- Not working
@Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel()
我收到如下错误
cannot be provided without an @Provides-annotated method.
public abstract static class SingletonC implements MainApplication_GeneratedInjector,
我的界面如下
interface TrafficImageRepository {
suspend fun getTrafficImages() : NetworkResponse<TrafficData, ErrorTrafficImages>
}
存储库类如下所示
class DefaultTrafficImagesRepository @Inject constructor(private val trafficImageService: TrafficImageService) : TrafficImageRepository {

override suspend fun getTrafficImages(): NetworkResponse<TrafficData, ErrorTrafficImages> {
lateinit var response: NetworkResponse<TrafficData, ErrorTrafficImages>
withContext(IO) {
val currentTimestamp = Constants.getCurrentTime()
response = trafficImageService.getTrafficImages(currentTimestamp)
}
return response
}
}
但是当我直接使用 DefaultTrafficImagesRepository 类而不是 Interface 时,我的应用程序能够构建而没有任何错误。
class MainViewModel @ViewModelInject constructor(
private val trafficImagesRepository: DefaultTrafficImagesRepository , <----------------- Working Fine
@Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel()

最佳答案

你必须绑定(bind)接口(interface)

@Module
@InstallIn(ViewModelComponent::class)
abstract class RepositoryModule {

@Binds
abstract fun bindRepository(impl: DefaultTrafficImagesRepository): TrafficImageRepository
}
并以这种方式使用 View 模型注入(inject)
@HiltViewModel
class MainViewModel @Inject constructor(
private val trafficImagesRepository: TrafficImageRepository,
@Assisted private val savedStateHandle: SavedStateHandle
) : ViewModel()

关于android - Dagger 柄 : cannot be provided without an @Provides-annotated method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65966105/

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