从包含在其中的方法的匿名内部类中返回数据

问题描述 投票:0回答:1

我有一个方法,它需要一个匿名内部类的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){
    ...
   }
 });
}
java android android-volley anonymous-class
1个回答
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){
    ...
   }
 });
© www.soinside.com 2019 - 2024. All rights reserved.