gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:24 24 4
gpt4 key购买 nike

我正在尝试读取响应,然后将其设置在全局变量中,以便我可以在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com