从内部 class 截击 return

volley return from inner class

我已经成功创建了一个服务器来为我服务API。由于我的服务器有很多 API,我想在我的 android 项目中使用它们,所以我正在为我的 Android 应用程序编写两个方法。

一个是get,这个方法会处理各种GET请求。

public static JSONObject postData(final Context context, String path, Map data)
{

    final RequestQueue requstQueue = Volley.newRequestQueue(context);
    String url=Util.serverURL+path;

    JSONObject res=null;

    JsonObjectRequest jsonobj = new JsonObjectRequest(Request.Method.POST,url ,new JSONObject(data),
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                res=response;
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(context,error.toString(),Toast.LENGTH_SHORT).show();
            }
        }
    ){

    };
    requstQueue.add(jsonobj);
}

这是无法return响应的问题。

如何return 内部 class 的响应?

分配资源给我错误。我应该如何 return 才能使用 async 接收它?

您无法从这样的 asynchronous 操作中获得响应。当 asynchronous 操作完成时,您必须使用回调函数来获取结果。按照以下步骤操作:

  • 创建一个interface回调
interface VolleyResponseListener {
    void onComplete(JSONObject jsonbject);
}
  • 配置您的 postData 以处理此回调
public void postData(final Context context, String path, Map data, VolleyResponseListener callback) {

    ....
        @Override
        public void onResponse(JSONObject response) {
            callback.onComplete(response);
        }

    ....
}
  • 在您的 activity 或片段
  • 中实现此接口
postData(..., new VolleyResponseListener() {
    @Override
    public void onComplete(JSONObject jsonbject) {
        //you can use jsonbject here
    }
});