作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下面的方法:它所做的是从另一个 Activity 调用方法 userSignIn 并返回一个 JsonObject,因为我的 volley 实现异步调用我已经实现了从 OnResponce 获取结果的回调接口(interface) 方法。然而,我面临的困难是将 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;
}
我也尝试过返回 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;
}
});
}
如何将 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);
}
关于android - 从自定义 VolleyCallback 接口(interface)返回 JSON 到调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34738660/
我有下面的方法:它所做的是从另一个 Activity 调用方法 userSignIn 并返回一个 JsonObject,因为我的 volley 实现异步调用我已经实现了从 OnResponce 获取结
我是一名优秀的程序员,十分优秀!