2016-12-03 70 views
1

如何從onResponse中獲得響應,以便我可以返回它?我已經找到了這個,但我真的不明白如何爲我實現它。 How can I return value from function onResponse of Volley?Android Volley從響應中返回的值

我希望有一個更新的方法或一些輕鬆,我可能會錯過 這是我的代碼

public Boolean checkIfPersonExists(Context context, final Person aPerson){ 
     StringRequest postRequest = new StringRequest(Request.Method.POST, USEREXISTS, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       Log.d("RESPONSE",response.toString()); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       error.printStackTrace(); 
      } 
     }){ 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       Map<String,String> params = new HashMap<>(); 
       params.put("email",aPerson.getEmail()); 
       params.put("phone",aPerson.getPhone()); 
       return params; 
      } 
     }; 
     Volley.newRequestQueue(context).add(postRequest); 
     return null; 
    } 
+1

您將返回什麼。但是以'response'作爲參數調用一個函數。該功能處理...響應。 – greenapps

+0

但是我不能調用另一個函數,因爲checkIfPersonExists是從一個Activity中調用的。 checkIfPersonExists位於另一個類中。 – JianYA

+0

您應該將其實現爲您不明白的鏈接中所描述的接口。 – greenapps

回答

0

正如有人所說,你需要實現的接口,並得到一個回調

創建一個像這樣的新界面

public interface GeneralCallbacks { 
void VolleyResponse(String data); 
} 

在您的活動類上實現接口

public class YourActivity implements ScoreboardCallback 
{ 
    @Override 
    public void VolleyResponse(String data) 
    { 
     //do stuff with data 
    } 
} 

最後改變你的響應函數是這樣的

 @Override 
     public void onResponse(String response) { 
      ((GeneralCallbacks)context).VolleyResponse(response); // This will make a callback to activity. 
      aPerson.SomeFunction(); // This will call person's function 
      Log.d("RESPONSE",response.toString()); 
     } 
+0

對不起,只是澄清一下,你能告訴我一個在別處被調用的代碼的例子嗎?如果需要參數,我該如何調用響應? – JianYA

+0

我修復了一些代碼錯誤。所以,你想打個電話給aPerson還是回覆活動?或在哪裏? –

相關問題