Неразрешенная ссылка

Привет, я использую Kotlin с Android Studio. И когда я пытаюсь запустить свой код, у меня есть эта ошибка: неразрешенная ссылка. Вот мой код:

private fun loadLocation(){ val stringRequest = StringRequest(Request.Method.GET, "localhost", Response.Listener<String> { s -> try { val obj = JSONObject(s) val array = obj.getJSONArray("response") for (i in 0..array.length() - 1) { val objectArtist = array.getJSONObject(i) val value = objectArtist.getString("value") val value100 = value.toDouble() } //This line below displays the right value Toast.makeText(getApplicationContext(), value100.toString(), Toast.LENGTH_LONG).show() } catch (e: JSONException) { e.printStackTrace() } }, Response.ErrorListener { volleyError -> Toast.makeText(applicationContext, volleyError.message, Toast.LENGTH_LONG).show() }) val requestQueue = Volley.newRequestQueue(this) requestQueue.add<String>(stringRequest) //This line below displays the wrong value Toast.makeText(getApplicationContext(), value100.toString(), Toast.LENGTH_LONG).show() } 

Проблема заключается в следующем: если я смотрю на эту строку:

 Toast.makeText(getApplicationContext(), value100.toString(), Toast.LENGTH_LONG).show() 

Эта первая строка отображает хорошие значения в первый раз, но если я попробую эту строку в конце кода, это не сработает … Я пытаюсь объявить переменную после private fun loadLocation(){ но когда я пытаюсь отобразить это, я получил 0. И мне нужно абсолютно получить значение моей переменной. Спасибо за помощь !

РЕДАКТИРОВАТЬ :

Я тоже пробовал этот код:

 private fun loadLocation(){ var value100 = 0 val stringRequest = StringRequest(Request.Method.GET, "localhost", Response.Listener<String> { s -> try { val obj = JSONObject(s) val array = obj.getJSONArray("response") for (i in 0..array.length() - 1) { val objectArtist = array.getJSONObject(i) val value = objectArtist.getString("value") value100 = value.toDouble() } //This line below displays the right value Toast.makeText(getApplicationContext(), value100.toString(), Toast.LENGTH_LONG).show() } catch (e: JSONException) { e.printStackTrace() } }, Response.ErrorListener { volleyError -> Toast.makeText(applicationContext, volleyError.message, Toast.LENGTH_LONG).show() }) val requestQueue = Volley.newRequestQueue(this) requestQueue.add<String>(stringRequest) //This line below displays the wrong value Toast.makeText(getApplicationContext(), value100.toString(), Toast.LENGTH_LONG).show() } 

И в этом случае я получаю для первого Тоста правильное значение, а для второго я получаю 0, что не является правильным значением …

Вы объявляете переменную внутри цикла for , поэтому она будет видна только внутри этого цикла. Чтобы сделать его видимым для всего кода внутри функции, объявите его в области функций. Чтобы иметь возможность изменить значение позже, используйте var вместо val . val похож на окончание Java: значение может быть назначено только один раз.

Вызов «правильного значения» makeText производится внутри вашего слушателя, который вызывается асинхронно – после получения ответа на запрос GET. Вот почему он всегда отображает правильное значение.

Вызов «неправильного значения» для makeText производится синхронно (что обычно происходит до получения ответа на запрос GET). Вот почему он (почти) всегда отображает неправильное значение (даже если значение value100 в области видимости).

Intereting Posts
Есть ли способ вложить enum в класс данных в Котлин? Android gradle build неожиданно отключается в ': app: mergeDebugResources' без сообщений об ошибках Котлин ждет, пока функция не закончится Функция расширения kotlin не понимает, как эта вещь работает Android Local VPN Service: не может пересылать пакеты Любой способ унаследовать один и тот же общий интерфейс дважды (с отдельными типами) в Котлин? Как исправить «Функция не является частью схемы для этого Царства» в расширении Царского Царства URL не загружается, особенно в устройстве samsung Вложенный интерфейс в Котлине Как сделать исходный код ссылки IntelliJ в другом модуле? Обобщить метод с нулевыми аргументами и возвращаемым типом Кинжал 2, вводящий представление модели активности в фрагмент Как применить метод запуска / остановки звука с помощью ToggleButton? Ошибка при создании новой пустой активности Spring Boot: пользовательский фильтр не работает после включения автоустановки репозитория