2016-12-03 4 views
1

Wie bekomme ich die Antwort aus onResponse, so dass ich es zurückgeben kann? Ich habe das gefunden, aber ich verstehe nicht wirklich, wie ich es für mich umsetzen soll. How can I return value from function onResponse of Volley?Android Volley Rückgabewert von Antwort

Ich hoffe, es ist eine aktualisierte Methode oder etwas einfacher, dass ich vielleicht verpasst haben, Dies ist mein Code

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

Ändern Sie nichts zurück. Aber rufen Sie eine Funktion mit 'response' als Parameter auf. Diese Funktionen behandeln die ... Antwort. – greenapps

+0

Aber ich kann keine andere Funktion aufrufen, da checkIfPersonExists von einer Aktivität aufgerufen wird. checkIfPersonExists befindet sich in einer anderen Klasse. – JianYA

+0

Sie sollten das als eine Schnittstelle implementieren, wie in dem Link beschrieben, den Sie nicht verstehen. – greenapps

Antwort

0

Wie es erwähnt wurde, müssen Sie Schnittstelle implementieren und einen Rückruf erhalten

Erstellen Sie eine neue Schnittstelle wie folgt

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

Implementieren Sie die Schnittstelle in Ihrer Aktivitätsklasse

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

Und schließlich Ihre Antwortfunktion zu so etwas wie dieses

 @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

Entschuldigung, nur um zu verdeutlichen, können Sie mir ein Beispiel des Codes zeigen, der an anderer Stelle aufgerufen wird? Wie rufe ich die Antwort auf, wenn sie einen Parameter benötigt? – JianYA

+0

Ich habe einen Fehler im Code behoben. Also, möchten Sie einen Anruf bei aPerson oder Callback zu Aktivität machen? oder wo? –

Verwandte Themen