我有一个进行API调用的方法,该方法需要匿名内部类。在匿名内部类内部,有一个onResponse
方法,该方法具有一个void
返回类型,可以在其中访问JSON。我希望该方法返回JSON。
public JSONObject makeAPIRequest() {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>(){
@Override
public void onResponse(JSONObject response){
//have makeAPIRequest() return response
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
...
}
});
}
答案 0 :(得分:2)
简短的回答-您需要重构您的方法,使其不具有程序性,并使用return
...
例如
public void makeAPIRequest(Response.Listener<JSONObject> listener) {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, listener);
// TODO: submit request
}
然后在其他类中,您将有一个回调作为您的“返回”
apiInstance.makeAPIRequest(new Response.Listener<JSONObject>(){
@Override
public void onResponse(JSONObject response){
// do stuff
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error){
...
}
});