我正在尝试保存一个 Application 实例并在 databaseHelper 的构造函数中使用,但是当我的活动尝试实例化 databaseHelper 时,出现以下异常:
FATAL EXCEPTION:
main Process: com.weatherupp.weatherupp, PID: 29092
java.lang.ExceptionInInitializerError
at com.weatherupp.weatherupp.ui.MainActivity.onCreate(MainActivity.kt:27)
[...]
Caused by: kotlin.UninitializedPropertyAccessException: lateinit
property instance has not been initialized
导致异常的代码如下:
MainActivity {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val provider = ForecastProvider()
[...]
}
ForecastProvider 具有以下伴随对象:
companion object {
val SOURCES = listOf(ForecastServer(), ForecastDb())
}
ForecastDb的构造函数引用了ForecastDbHelper的一个实例,其构造函数引用了App.instance,声明如下:
class App : Application() {
companion object {
lateinit var instance: App
}
override fun onCreate() {
super.onCreate()
instance = this
}
}
如果我注释所有引用数据库的代码,应用程序使用 ForecastServer 作为数据源,但是当我尝试引用数据库并因此引用应用程序时,Kotlin 抛出 UninitializedPropertyAccessException。
我一直在看代码几个小时,无法弄清楚我做错了什么。任何帮助都是有福的,提前感谢大家。