我有一个按钮,在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
变量
答案 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);