我想保存一個應用實例,並在databaseHelper的構造函數中使用,但是當我的活動試圖實例化databaseHelper我得到以下異常:應用程序崩潰,因爲lateinit App實例未初始化
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源的數據,但是當我嘗試引用數據庫並因此引用App時,Kotlin拋出UninitializedPropertyAccessException。
我一直在尋找了幾個小時的代碼,也弄不清是什麼,我做錯了。任何幫助都是有福的,提前感謝你們所有人。
您已確認的應用程序的onCreate實際運行添加您的
App
類作爲Application
?可能忘記將其添加到清單。 – FWeigl非常感謝!我不敢相信我在這上面失去了三個小時,並沒有注意到我在App.onCreate上的斷點沒有做任何事情。 你可以把它寫成一個答案,讓我能接受嗎? :) –