Я пытаюсь сохранить экземпляр приложения и использовать в конструкторе databaseHelper, но когда моя деятельность пытается создать экземпляр databaseHelper я получаю следующие исключения:App сбой, потому что lateinit экземпляр приложения не инициализирован
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 istance, Kotlin выбрасывает UninitializedPropertyAccessException.
Я смотрел код в течение нескольких часов, не могу понять, что я делаю неправильно. Любая помощь благословляется, благодарю всех вас заранее.
Вы подтвердили, что OnCreate приложения будет реально работать? Возможно, забыли добавить его в манифест. – FWeigl
Спасибо большое! Я не могу поверить, что потерял три часа на этом и не заметил, что моя точка останова в App.onCreate ничего не делает. Можете ли вы написать это как ответ, чтобы я мог принять его? :) –