java - onResponse 方法中的 Volatile 变量没有改变

标签 java android android-volley

我正在尝试读取响应,然后将其设置在全局变量中,以便我可以在 Activity 中使用它。该请求位于单独的类中。我已经在 Activity 类中尝试过设置 volatile 静态变量,但它没有改变。

Activity 中:

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 的值并能够在 Activity 中读取它。 抱歉,如果问题很琐碎。我是 Java 新手。

最佳答案

在SendData类中声明一个静态变量并用它来存储senData方法的结果:

private static boolean resultOk;

将sendData的返回类型更改为boolean,并将setSend(true);更改为resultOk = true;

方法结束时:return resultOk;

在 Activity 中直接调用该方法 if(SendData.sendData()) {}

关于java - onResponse 方法中的 Volatile 变量没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56058370/

相关文章:

java - listFiles 不返回文件,只返回顶级文件夹

java - 验证模拟对象中的对象被传递到 Mockito 中的参数

java - 在调用 remove 方法后合并迭代器集合。变化如何反射(reflect)在主要 Collection 中?

java - 使用插入排序、选择排序和归并排序进行排序

android - 可绘制图像缩放

带有 Volley 的 Android 离线请求

android - 如何将 Edittext 和 Button 添加到具有图标和文本的 Efficient Adapter

android - android activity被打断怎么办?

android - 使用 Volley 将 json 作为字符串发布到服务器

java - Android Volley 库给出了蜂窝数据连接超时错误