gpt4 book ai didi

android - 从自定义 VolleyCallback 接口(interface)返回 JSON 到调用方法

转载 作者:行者123 更新时间:2023-11-29 20:11:36 26 4
gpt4 key购买 nike

我有下面的方法:它所做的是从另一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com