现在我想转换,一个洞应用程序,我有房间,到这个干净的架构。在本教程中,Florian使用DI,将TaskDao注入到TaskViewModel,但我有一个存储库类。
所以我到了这样一个点,即应用程序的构建没有错误。
这是我的存储库:
class AnioRepository constructor(
private val agrotrackerApi: AgrotrackerApi
) {
val TAG = "AnioRepository"
//val anioDao: AnioDao
fun downloadAnios(): AniosResponse? {
GlobalScope.launch(Dispatchers.IO) {
val result = agrotrackerApi.getAnios()
if (result.isSuccessful) {
for (anio in result.body()!!){
Log.d(TAG, anio.toString())
}
}
}
return null
}
fun getAnios() {
//anioDao.getListAnios()
}
}
@Module
@InstallIn(ApplicationComponent::class)
object RepositoryModule {
@Singleton
@Provides
fun providesAnioRepository( agrotrackerApi: AgrotrackerApi) : AnioRepository {
return AnioRepository(agrotrackerApi)
}
}
class AnioRepository constructor(
private val anioDao: AnioDao,
private val agrotrackerApi: AgrotrackerApi
) {
val TAG = "AnioRepository"
...
然后,更改RepositoryModule,以匹配构造函数...
...
fun providesAnioRepository( anioDao: AnioDao, agrotrackerApi: AgrotrackerApi) : AnioRepository
= AnioRepository(anioDao, agrotrackerApi)
...
公共抽象类ATMDatabase扩展了AndroidX.room.RoomDatabase{^C:\pryectos\androidStudioProjects\atMobileXKT\app\build\generated\source\kapt\cap\build\kapt\debug\capt\com\cse\atm\atm\atmapplication_hiltcomponents.java:155:错误:[dagger/missingbinding]@com.cse.atm.di.applicationScope Kotlinx.coroutinescope没有@provides-annotated.database.ATMDatabase.callback(,applicationScope)com.cse.atm.database.ATMDatabase.callback在com.cse.atm.di.appmodule.providesdatabase(,callback)com.cse.atm.di.appmodule.providesdatabase(,callback)com.cse.atm.di.appmodule.providesdatabase(,callback)com.cse.atm.di.appmodule.providesdatabase.ATMDatabase在
这个错误是什么意思?我错过了什么?
@ApplicationScope注释在另一个AppModule.kt中,我不知道问题在哪里。
任何帮助都将不胜感激!!
致以最诚挚的问候
您的atmdatabase.callback
请求使用自定义限定符@applicationscope
的coroutinescope
,但是您没有在任何模块中提供这样的coroutinescope
。
为了提供一个coroutine范围,您链接的教程在28分钟内添加了以下代码:
@Provides
@Singleton
fun provideApplicationScope() = CoroutineScope(SupervisorJob())
由于在请求coroutine作用域时使用@applicationscope
限定符,因此还需要向@provides
方法添加限定符:
@Provides
@Singleton
@ApplicationScope
fun provideApplicationScope() = CoroutineScope(SupervisorJob())
我对匕首比较陌生,我刚开始使用剑柄。我想要的是在中注入一个应用程序范围的存储库(这意味着它需要在任何地方都是相同的对象)。存储库将用于检索用户、auth令牌和诸如此类的东西。这是我能找到的最接近的: 这样一切都可以正常工作,使用debug我可以确认每次使用时都注入了相同的实例。问题是第二次调用时(例如,视图被销毁并重新创建)。我不知道我是在科特林一侧犯了什么愚蠢的错误,还是在剑柄一侧犯了什么愚蠢的
问题内容: 我需要将两个对象注入。其中一个是的实例,我得到这样的信息: 那么如何在我的services.yml中声明呢?这是服务: 问题答案: 我找到了此链接,这对我有用:
我正在使用匕首2,我有一个定义如下的: 这是FYViewModel的: 但是,变量始终为空。 如何使用匕首2将Repositroy注入我的ViewModel?
这是我的束缚 错误在于 /Users/X/AndroidStudioProjects/Corotuines/app/build/generated/source/kapt/debug/com/example/corotuines/application/ApplicationMain_HiltComponents.java:126:错误:[Dagger/Mis的绑定]com.example.cor
我正在用Symfony制作简单的应用程序。我在这里配置了服务 我的服务使用存储库(例如,评论服务使用评论存储库),这里是的构造函数 性质 构造函数: 当我试图运行我的应用程序我得到这个错误 PHP致命错误:未捕获Symfony\Component\DependencyInjection\Exception\AutowiringFailedException:无法自动连线服务“AppBundle\R
Application.Properties 注意:即使有数据源bean也没有帮助: