Изменчивая переменная не изменяется в методе onResponse - PullRequest
1 голос
/ 09 мая 2019

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

В действии:

private void posalji(String name, String jmb){
        SendData sendData = new SendData(getApplicationContext(), Constants.FIRSTtimeREQUEST_URL);
        HashMap<String, String> mapa = new HashMap<>();
        mapa.put("name", name);
        mapa.put("jmb", jmb);
        mapa.put("phone", pNumber);
        mapa.put("mac_address", getMacAddress());
        sendData.setDataMap(mapa);
        sendData.sendData();

        if(sendData.isSend()) {
            //do something
        }else{
           //do something
        }
    }

В классе SendData:

public void sendData() {
        StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                setSend(true);
                setRetrievedData(parseHTML(response));
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                setSend(false);
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                Iterator it = dataMap.entrySet().iterator();
                while (it.hasNext()) {
                    Map.Entry pair = (Map.Entry) it.next();
                    params.put(pair.getKey().toString(), pair.getValue().toString());
                    it.remove();
                }
                return params;
            }
        };
        queue.add(stringRequest);
    }

Мне нужно изменить значение Boolean и прочитать его в действии. Извините, если вопрос тривиален. Я новичок в Java.

1 Ответ

0 голосов
/ 09 мая 2019

в классе SendData объявляют статическую переменную и используют ее для хранения результата метода senData:

private static boolean resultOk;

изменить тип возвращаемого значения sendData на логическое значение и изменить setSend(true); на resultOk = true;

В конце метода: return resultOk;

в действии просто вызовите метод напрямую if(SendData.sendData()) {}

...