Android studio (Kotlin) Получить координаты X и Y устройства в классе - PullRequest
0 голосов
/ 06 мая 2020

Я сам создал класс Location с двумя Double val (долгота и широта)

Теперь в пустом конструкторе я хотел бы использовать FusedLocationProviderClient, чтобы получить текущее местоположение устройства, которое затем сохраняю в два val для представления текущего местоположения. Я делаю один с LocationServices, затем onSucces помещаю переменные внутрь класса. Проблема в том, что я получаю следующую ошибку:

Инициализация захваченных значений элементов запрещена из-за возможного переназначения

Конструктор выглядит следующим образом:

constructor(context: Context) {
   val client = LocationServices.getFusedLocationProviderClient(context)
    client.lastLocation.addOnSuccessListener { location: Location? ->  
        if (location != null) {
            this.latitude = location.latitude
            this.longitude = location.longitude
        }

        else {
            this.latitude = 0.0
            this.longitude = 0.0
        }
    }
}

Я немного потерялся здесь. Как мне обойти эту проблему, чтобы у меня были координаты пользователя в переменных?

Есть ли какой-то способ, например, когда я сначала принудительно устанавливаю последнее местоположение на fini sh перед сохранением переменных, значит, компилятор уверен, что у него есть значение, которое тоже не будет переназначено?

1 Ответ

1 голос
/ 06 мая 2020

Я предполагаю, что свойства latitude и longitude вашего класса доступны только для чтения val s. Вы не можете сделать их val, если вы не назначаете их в конструкторе. В вашем коде вы назначаете их в обратном вызове (код, который будет вызван позже), поэтому они не инициализируются к моменту возврата конструктора, и вы пытаетесь установить их значения, когда они доступны только для чтения.

Вам нужно сделать их var свойствами чтения-записи. Вы можете дать им значения по умолчанию 0.0, чтобы они не допускали значения NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...