簡體   English   中英

從包含在其中的方法的匿名內部類內部返回數據

[英]Return data from inside an anonymous inner class for method it is contained in

我有一個進行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){
    ...
   }
 });
}

簡短的答案-您需要重構您的方法,以便它不是程序性的,並使用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){
    ...
   }
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM