Return JSON 从自定义 VolleyCallback 接口到调用方法
Return JSON from custom VolleyCallback interface to calling method
我有下面的方法:它所做的是从另一个 activity 和 return 调用方法 userSignIn 一个 JsonObject,因为我的 volley 实现是异步调用的,所以我已经实现了回调接口从 OnResponce 方法获取结果。然而,我面临的困难是 return 将 JSONObject 调用 Activity.
@Override
public JSONObject userSignIn(String user, String pass,String version, String authType, String URL) throws Exception {
urlBuilder = new StringBuilder(URL);
urlBuilder.append("?uname=" + user);
urlBuilder.append("&passwd=" + pass);
urlBuilder.append("&ver=" + version);
URI=urlBuilder.toString();
VolleyLoginExecute(new VolleyCallback() {
@Override
public JSONObject onSuccess(JSONObject result) {
responce = result;
return responce;
}
});
return responce;
}
public interface VolleyCallback{
JSONObject onSuccess(JSONObject result);
}
public JSONObject VolleyLoginExecute(final VolleyCallback callback) {
JsonObjectRequest LoginReq = new JsonObjectRequest(Request.Method.GET,URI, null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (response != null) {
callback.onSuccess(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
})
{
@Override
public Priority getPriority() {
return priority;
}
};
LoginReq.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Acme_Application.getInstance().addToRequestQueue(LoginReq, tag_login_req);
return responce;
}
我也对 return JsonObject 进行了尝试,但效果不佳
@Override
public JSONObject userSignIn(String user, String pass,String version, String authType, String URL) throws Exception {
urlBuilder = new StringBuilder(URL);
urlBuilder.append("?uname=" + user);
urlBuilder.append("&passwd=" + pass);
urlBuilder.append("&ver=" + version);
URI=urlBuilder.toString();
return VolleyLoginExecute(new VolleyCallback() {
@Override
public JSONObject onSuccess(JSONObject result) {
responce = result;
return responce;
}
});
}
我如何return JsonObject 到调用 activity 成功
@Override
public void userSignIn(final VolleyCallback volleyCallback,String user, String pass,String version, String authType, String URL) throws Exception {
urlBuilder = new StringBuilder(URL);
urlBuilder.append("?uname=" + user);
urlBuilder.append("&passwd=" + pass);
urlBuilder.append("&ver=" + version);
URI=urlBuilder.toString();
VolleyLoginExecute(new VolleyCallback() {
@Override
public void onSuccess(JSONObject result) {
volleyCallback.onSuccess(result);
}
});
} public interface VolleyCallback{
void onSuccess(JSONObject result);
} public void VolleyLoginExecute(final VolleyCallback callback) {
JsonObjectRequest LoginReq = new JsonObjectRequest(Request.Method.GET,URI, null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (response != null) {
callback.onSuccess(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
})
{
@Override
public Priority getPriority() {
return priority;
}
};
LoginReq.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Acme_Application.getInstance().addToRequestQueue(LoginReq, tag_login_req);
}
我有下面的方法:它所做的是从另一个 activity 和 return 调用方法 userSignIn 一个 JsonObject,因为我的 volley 实现是异步调用的,所以我已经实现了回调接口从 OnResponce 方法获取结果。然而,我面临的困难是 return 将 JSONObject 调用 Activity.
@Override
public JSONObject userSignIn(String user, String pass,String version, String authType, String URL) throws Exception {
urlBuilder = new StringBuilder(URL);
urlBuilder.append("?uname=" + user);
urlBuilder.append("&passwd=" + pass);
urlBuilder.append("&ver=" + version);
URI=urlBuilder.toString();
VolleyLoginExecute(new VolleyCallback() {
@Override
public JSONObject onSuccess(JSONObject result) {
responce = result;
return responce;
}
});
return responce;
}
public interface VolleyCallback{
JSONObject onSuccess(JSONObject result);
}
public JSONObject VolleyLoginExecute(final VolleyCallback callback) {
JsonObjectRequest LoginReq = new JsonObjectRequest(Request.Method.GET,URI, null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (response != null) {
callback.onSuccess(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
})
{
@Override
public Priority getPriority() {
return priority;
}
};
LoginReq.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Acme_Application.getInstance().addToRequestQueue(LoginReq, tag_login_req);
return responce;
}
我也对 return JsonObject 进行了尝试,但效果不佳
@Override
public JSONObject userSignIn(String user, String pass,String version, String authType, String URL) throws Exception {
urlBuilder = new StringBuilder(URL);
urlBuilder.append("?uname=" + user);
urlBuilder.append("&passwd=" + pass);
urlBuilder.append("&ver=" + version);
URI=urlBuilder.toString();
return VolleyLoginExecute(new VolleyCallback() {
@Override
public JSONObject onSuccess(JSONObject result) {
responce = result;
return responce;
}
});
}
我如何return JsonObject 到调用 activity 成功
@Override
public void userSignIn(final VolleyCallback volleyCallback,String user, String pass,String version, String authType, String URL) throws Exception {
urlBuilder = new StringBuilder(URL);
urlBuilder.append("?uname=" + user);
urlBuilder.append("&passwd=" + pass);
urlBuilder.append("&ver=" + version);
URI=urlBuilder.toString();
VolleyLoginExecute(new VolleyCallback() {
@Override
public void onSuccess(JSONObject result) {
volleyCallback.onSuccess(result);
}
});
} public interface VolleyCallback{
void onSuccess(JSONObject result);
} public void VolleyLoginExecute(final VolleyCallback callback) {
JsonObjectRequest LoginReq = new JsonObjectRequest(Request.Method.GET,URI, null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (response != null) {
callback.onSuccess(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
})
{
@Override
public Priority getPriority() {
return priority;
}
};
LoginReq.setRetryPolicy(new DefaultRetryPolicy(5000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Acme_Application.getInstance().addToRequestQueue(LoginReq, tag_login_req);
}