【发布时间】:2021-01-29 18:14:28
【问题描述】:
我正在尝试从 Android 上的活动调用我的数据库(使用 Room 制作),但它需要应用程序上下文,如果我在 Activity 的构造函数中传递“应用程序:应用程序”,则构建崩溃并告诉我:
java.lang.Class
没有零参数构造函数
这是我的代码:
class PhotoActivity(application: Application) : AppCompatActivity() {
private val pictureDao = PictureDatabase.getDatabase(app)
//Some code ....
我需要一个上下文,我试图传递“this”,但又遇到了另一个错误
谁能帮帮我,我是这项技术的初学者
编辑:
这是我的数据库类,只是为了向您展示我为什么需要应用程序上下文
@Database(entities = [Picture::class], version = 1, exportSchema = false)
abstract class PictureDatabase : RoomDatabase(){
abstract fun pictureDao() : PictureDao
companion object{
@Volatile
private var INSTANCE : PictureDatabase? = null
fun getDatabase(context: Context): PictureDatabase {
if(INSTANCE == null){
synchronized(this){
INSTANCE = Room.databaseBuilder(
context.applicationContext,
PictureDatabase::class.java,
"pictures.db"
).build()
}
}
return INSTANCE!!
}
}
}
【问题讨论】:
-
感谢@Reza 提供指向另一个问题的链接,我学到了一些东西,但还不足以解决我的问题..
-
好吧,我的朋友删除应用程序:来自活动构造器的应用程序。通常活动和片段应该有空的构造函数,因为android会为我们实例化它们,我们不负责创建它们
标签: android android-room android-database