虽然Log.d总是显示字符串(第一次也是),但布尔值仅在第二次或更多时间处于我执行请求的位置。我想第一次布尔值为真。
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_UPDATE,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//do stuffs with response of post
Log.d("Bien:",response.substring(0));
correctoExterna = true;
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//do stuffs with response erroe
correctoExterna = false;
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put("consulta",consultaExterna);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);
if(correctoExterna) snackBar();
答案 0 :(得分:0)
您的实施是异步的,这意味着您的__declspec(naked)
尚未更改,因为回调尚未触发。如果您需要以同步方式实现,请使用correctoExterna
FutureRequest
答案 1 :(得分:0)
也许你需要把“if(correctoExterna)snackBar();” 在“public void onResponse(String response)”中,在“correctoExterna = true;”后面
在RequestQueue中添加StringRequest之后,它将在后台线程上执行,因此当你执行“if(correctoExterna)snackBar();”时,它可能不会调用onResponse回调方法。