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 のコンストラクターは、次のように宣言された App.instance を参照する ForecastDbHelper のインスタンスを参照します。
class App : Application() {
companion object {
lateinit var instance: App
}
override fun onCreate() {
super.onCreate()
instance = this
}
}
データベースを参照するすべてのコードにコメントを付けると、アプリはデータ ソースとして ForecastServer を使用して動作しますが、データベースを参照しようとすると、つまりアプリ インスタンスを参照しようとすると、Kotlin は UninitializedPropertyAccessException をスローします。
私は何時間もコードを見てきましたが、何が間違っているのかわかりません。どんな助けでも祝福されます、事前に皆さんに感謝します.