下面是一個我試圖通過調用getSelf()來檢索用戶對象的方法。問題在於結果始終爲空,因爲Volley請求在返回結果時尚未完成。我對於異步流程有點新,所以我不確定讓方法等待API調用的結果返回UserBean對象的最佳方式。任何人都可以給我一些幫助嗎?等待Async Volley請求的結果並返回它
public UserBean getSelf(String url){
RpcJSONObject jsonRequest = new RpcJSONObject("getSelf", new JSONArray());
JsonObjectRequest userRequest = new JsonObjectRequest(Request.Method.POST, url, jsonRequest,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
String result;
try {
result = response.getString("result");
Gson gson = new Gson();
java.lang.reflect.Type listType = new TypeToken<UserBean>() {}.getType();
//HOW DO I RETURN THIS VALUE VIA THE PARENT METHOD??
userBean = (UserBean) gson.fromJson(result, listType);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error:", error.toString());
finish();
}
}
);
this.queue.add(userRequest);
return userBean;
}
你不應該做你想做的事情。異步處理的原因是,在做「慢」的事情時你不會阻止程序或用戶界面。所以你的'onResponse'應該通知調用者該對象可用,然後顯示它。如果您需要用戶等待,請提出進度對話框,然後在結果可用時將其解除。 – 323go
也檢查你的迴應。它可能是'null'。 –