Эта ошибка возникает, когда вы объявляете свойство как lateinit
и не инициализируете его перед использованием.
class YourClass {
// You're declaring you'll assign a value for this field later in the code
lateinit var someObject : SomeType
fun doSomething(){
someObject.method() // Boom ! UninitializedPropertyAccessException
}
}
class YourClass {
// You're declaring you'll assign a value for this field later in the code
lateinit var someObject : SomeType
fun doSomething(){
someObject = SomeObject()
someObject.method() // Totally fine !
}
}
Чтобы избежать этой ошибки, вы ДОЛЖНЫ инициализировать свое свойство, прежде чем пытаться получить к нему доступ.иначе вы всегда получите эту ошибку.
Если инициализация зависит от условия, и вы не уверены, что это произошло или нет, вы можете проверить, позвонив ::propertyName.isInitialized
как @ kartik malik предлагается, прежде чем пытаться использовать свойство.