Как правильно установить поля в анонимном классе и использовать их в основном классе? - PullRequest
0 голосов
/ 04 января 2019

Я делаю приложение в Android Studio и не могу установить значение полей в анонимном классе.

Я знаю, что «receiveNumber» всегда отличается от «-1», и значение «isExist» должно быть «true», но в журнале «false».То же самое происходит с int field - всегда возвращайте '0'.Что я должен сделать, чтобы правильно установить поля в анонимном классе и использовать их в моем основном классе.

private void isNumberExist()
{
        String URL = "some url...";
        final boolean[] isExist = new boolean[1];
        objectRequest = new JsonObjectRequest(
                Request.Method.GET,
                URL,
                null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            int receivedNumber = response.getInt("id");
                            if (receivedNumber == -1) {                           
                                isExist[0] = false;                          
                            } else {     
                                isExist[0] = true;              
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                       //error
                    }
                }
        );
        Log.e("isExist","value"+ isExist[0]);
        requestQueue.add(objectRequest);
        requestQueue.cancelAll(this);
}

1 Ответ

0 голосов
/ 04 января 2019

Всегда будет false, потому что вы регистрируетесь isExist[0] до выполнения запроса http (s)

Пожалуйста, попробуйте это

private void isNumberExist()
{
    String URL = "some url...";
    final boolean[] isExist = new boolean[1];
    objectRequest = new JsonObjectRequest(
            Request.Method.GET,
            URL,
            null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        int receivedNumber = response.getInt("id");
                        if (receivedNumber == -1) {                           
                            isExist[0] = false;                          
                        } else {     
                            isExist[0] = true;              
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    // New log location
                    Log.e("isExist","value"+ isExist[0]);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //error
                }
            }
            );
    requestQueue.add(objectRequest);
    requestQueue.cancelAll(this);
}
...