on click listener在第二次单击时工作

时间:2018-05-18 14:32:11

标签: java android android-volley

我有一个按钮,在onClick()中,代码返回一个结果。

我的问题是在第一次点击此按钮时结果为null 在第二次单击时,它返回true

我不知道为什么。

这段代码:

 JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, ur, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        jsonArray = response.getString("referentiel");
                        Log.d(TAG, "onResponse() returned: kkkkkk" + jsonArray);


                        //for (int i = 0; i < jsonArray.length(); i++) {
                        //JSONObject employee = jsonArray.getJSONObject(i);

                        String firstName = jsonArray.toString();
                        // Toast.makeText(ActivityUserProfile.this, "ok"+firstName, Toast.LENGTH_LONG).show();

                        // int age = employee.getInt("age");
                        // String mail = employee.getString("mail");

                        // mTextViewResult.append(jsonArray + ", " +"\n\n");
                        //}
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });

    mQueue.add(request);
    Toast.makeText(MainActivity.this, "ok"+jsonArray, Toast.LENGTH_LONG).show();

}
  }

结果是jsonArray变量

1 个答案:

答案 0 :(得分:1)

JsonObjectRequest是一个异步请求。它将运行在除主线程之外的其他线程上。因此,请在onResponse()中使用响应。即在onResponse()内移动Toast。对请求回调方法中的数据进行所有进一步处理。 Volley回调在主线程上运行,因此您可以直接访问回调方法中的UI元素。

 JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, ur, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            // Handle Response here 
                            jsonArray = response.getString("referentiel");
                            Toast.makeText(MainActivity.this, "ok" + jsonArray, Toast.LENGTH_LONG).show();

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
                // handle error here
            }
        });
           mQueue.add(request);