Ich versuche, eine Anwendungsinstanz und verwenden im Konstruktor von databaseHelper zu retten, aber wenn meine Tätigkeit versucht, den databaseHelper ich die folgenden Ausnahmen zu instanziiert:Absturz App weil lateinit App-Instanz nicht initialisiert
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
die Code Ausnahme führt, ist die folgende:
MainActivity {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val provider = ForecastProvider()
[...]
}
ForecastProvider hat folgende Begleitobjekt:
companion object {
val SOURCES = listOf(ForecastServer(), ForecastDb())
}
bezieht sich ForecastDb Konstruktor auf eine Instanz ForecastDbHelper, deren Konstruktor bezieht sich auf App.instance, erklärt sich wie folgt:
class App : Application() {
companion object {
lateinit var instance: App
}
override fun onCreate() {
super.onCreate()
instance = this
}
}
Wenn ich kommentieren Sie den gesamten Code in die Datenbank Bezug genommen wird, funktioniert die App ForecastServer als Quelle verwenden Wenn ich versuche, auf die Datenbank und damit auf die App zu verweisen, löst Kotlin die UninitializedPropertyAccessException aus.
Ich habe den Code für Stunden betrachtet, kann nicht herausfinden, was ich falsch mache. Jede Hilfe ist gesegnet, danke euch allen im Voraus.
, dass die onCreate App Haben Sie sich vergewissert hinzugefügt tatsächlich ausgeführt wird? Vielleicht habe ich vergessen, es dem Manifest hinzuzufügen. – FWeigl
Vielen Dank! Ich kann nicht glauben, dass ich drei Stunden verloren habe und nicht bemerkt habe, dass mein Breakpoint auf App.onCreate nichts getan hat. Können Sie es als Antwort schreiben, damit ich es annehmen kann? :) –