Android Kotlin 1.0.2房间数据库
我正在使用koin 1.0.2来管理依赖项注入,但它不能与room数据库一起工作,它返回到无法为单个数据库创建定义。。。这是我的密码:Android Kotlin 1.0.2房间数据库,android,kotlin,koin,Android,Kotlin,Koin,我正在使用koin 1.0.2来管理依赖项注入,但它不能与room数据库一起工作,它返回到无法为单个数据库创建定义。。。这是我的密码: @Database(entities = [UserEntity::class], version = 1, exportSchema = false) abstract class UserDatabase : RoomDatabase() { abstract fun userDao(): UserDao companion object
@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)
}
我在一个带有示例实体的测试项目中尝试了您的代码,它成功了。由于您尚未发布实际错误描述,请执行/确保以下步骤,然后重试 将以下依赖项添加到
build.gradle
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version"
如果您将RxJava用于room,那么也添加以下行
implementation "androidx.room:room-rxjava2:$room_version"
应用kotlin-kapt
插件
apply plugin: 'kotlin-kapt'
清洁和建造
如果您仍然遇到问题,请考虑用LogCAT堆栈跟踪编辑问题。
< P>您是否在其他模块中声明了<代码>上下文< /代码>对象的定义?因为您的数据库方法需要这个方法,而您正在调用get()
来解析它。如果没有,就换一个
single{UserDatabase.getInstance(get())}
到
single{UserDatabase.getInstance(androidContext())}