我正在使用koin 1.0.2来管理依赖项注入,但是它不能与会议室数据库一起使用,返回时无法为单个对象创建定义...这是我的代码:
@Database(entities = [UserEntity::class], version = 1, exportSchema = false)
abstract class UserDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
companion object {
private var INSTANCE: UserDatabase? = null
fun getInstance(context: Context): UserDatabase {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(
context,
UserDatabase::class.java,
"user_database")
.allowMainThreadQueries()
.build()
}
return INSTANCE!!
}
}
}
val DatabaseModule = module {
single { UserDatabase.getInstance( get())}
}
class UserApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin(getModules())
}
private fun getModules() = listOf(DatabaseModule, RepositoryModule, ViewModule)
}
答案 0 :(得分:0)
我已经在带有示例实体的测试项目中尝试了您的代码,并且该代码有效。由于您尚未发布实际的错误说明,因此请执行/确保以下步骤,然后重试。
将以下依赖项添加到build.gradle
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
如果您正在使用RxJava作为空间,则还要添加以下行
implementation "androidx.room:room-rxjava2:$room_version"
应用kotlin-kapt
插件
apply plugin: 'kotlin-kapt'
清理并构建。
如果仍然遇到问题,请考虑使用logcat堆栈跟踪来编辑问题。
答案 1 :(得分:0)
您是否在其他模块中声明了Context
对象的定义?因为您的数据库方法需要这一方法,所以您正在调用get()
来解决它。如果没有,只需更改
single { UserDatabase.getInstance(get()) }
到
single { UserDatabase.getInstance(androidContext()) }