При прослушивании кликов работает во втором клике

У меня есть кнопка, и в onClick () код возвращает результат.

Моя проблема в том, что при первом нажатии на эту кнопку результат null при втором щелчке возвращается true.

Не знаю почему.

Это код:

 JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, ur, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        jsonArray = response.getString("referentiel");
                        Log.d(TAG, "onResponse() returned: kkkkkk" + jsonArray);


                        //for (int i = 0; i < jsonArray.length(); i++) {
                        //JSONObject employee = jsonArray.getJSONObject(i);

                        String firstName = jsonArray.toString();
                        // Toast.makeText(ActivityUserProfile.this, "ok"+firstName, Toast.LENGTH_LONG).show();

                        // int age = employee.getInt("age");
                        // String mail = employee.getString("mail");

                        // mTextViewResult.append(jsonArray + ", " +"\n\n");
                        //}
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });

    mQueue.add(request);
    Toast.makeText(MainActivity.this, "ok"+jsonArray, Toast.LENGTH_LONG).show();

}
  }

результат - переменная jsonArray

Я не вижу оператора возврата, думаю, нам нужно больше кода

firegloves 18.05.2018 16:35

возврат находится в Toast.makeText (MainActivity.this, "ok" + jsonArray, Toast.LENGTH_LONG) .show ();

Ouertani Saiid 18.05.2018 16:35

Пожалуйста, используйте точки и запятые! Трудно прочитать ваш вопрос!

Planck Constant 18.05.2018 16:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
38
1

Ответы 1

JsonObjectRequest - это асинхронный запрос. он будет работать в другом потоке, кроме основного потока. Так что используйте ответ внутри onResponse(). Т.е. переместите тост в onResponse(). Дальнейшую обработку данных выполняйте внутри методов обратного вызова запроса. Обратные вызовы Volley выполняются в основном потоке, поэтому вы можете напрямую обращаться к элементам пользовательского интерфейса в методах обратного вызова.

 JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, ur, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            // Handle Response here 
                            jsonArray = response.getString("referentiel");
                            Toast.makeText(MainActivity.this, "ok" + jsonArray, Toast.LENGTH_LONG).show();

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
                // handle error here
            }
        });
           mQueue.add(request);

Другие вопросы по теме