为什么Android Volley第一次不起作用?

时间:2016-09-28 23:41:31

标签: java android json android-volley

虽然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();

2 个答案:

答案 0 :(得分:0)

您的实施是异步的,这意味着您的__declspec(naked)尚未更改,因为回调尚未触发。如果您需要以同步方式实现,请使用correctoExterna

FutureRequest

答案 1 :(得分:0)

也许你需要把“if(correctoExterna)snackBar();” 在“public void onResponse(String response)”中,在“correctoExterna = true;”后面

在RequestQueue中添加StringRequest之后,它将在后台线程上执行,因此当你执行“if(correctoExterna)snackBar();”时,它可能不会调用onResponse回调方法。