从内部 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
}
});
我已经成功创建了一个服务器来为我服务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
}
});