Volley-Anfrage Callback übergeben die falsche callback-Antwort
Habe ich einen Rückruf auf die volley-Anfrage und ich haben zwei Anfrage gestartet 2 unterschiedliche Aktivität. Wenn ich die erste Anfrage, dann die zweite Rückkehr auf die Reaktion der ersten..
Dies ist mein Wunsch und callback:
public static void RequestJsonToServer(Context ctx, final JSONObject params, final VolleyCallback callback){
MySingleVolley.getInstance(ctx).
getRequestQueue();
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,ctx.getString(R.string.defaultServerRequestUrl),params,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
callback.onSuccess(response);
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("REQUEST_JSON_TO_SERVER", "Error: " + error);
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
return headers;
}
};
MySingleVolley.getInstance(ctx).addToRequestQueue(jsObjRequest);
}
public interface VolleyCallback{
void onSuccess(JSONObject string);
}
- Und dies ist eine der beiden Start-Anfrage:
Global.RequestJsonToServer(getActivity(), jsonObject, new Global.VolleyCallback() {
@Override
public void onSuccess(JSONObject result) {
Toast.makeText(getActivity(),result.toString(), Toast.LENGTH_LONG).show();
}
});
Ich hoffe mir kann jemand helfen
Dank
Edit:
Ich ändere es so
Global.RequestJsonToServer(getApplicationContext(), jsonObject, new Global.VolleyCallback() {
@Override
public void onSuccess(JSONObject result) {
Toast.makeText(getApplicationContext(), result.toString(), Toast.LENGTH_LONG).show();
}
@Override
public void onSuccessCustom(JSONObject string) {
}
}, true);
Und die andere mit falsch.. Aber vielleicht ist der falsche Weg, es zu benutzen..ich würde gerne einen einzigen Rückruf und Wiederverwendung, nicht wechseln zwischen zwei Rückrufe
MEINE LÖSUNG
Ich gefunden habe, meine eigene Lösung, das problem war nicht in der callback-aber war in der Volleyball-Anfrage. Die Antwort für jede Anforderung zwischengespeichert wurde und ich weiß nicht, warum, es wird wieder die falschen, immer die falsche Antwort.
Habe ich nur Hinzugefügt, das vor dem hinzufügen der request-queue:
jsObjRequest.setShouldCache(false);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist passiert, weil der callback-Methode ist common[onSuccess(...)]warum schreibst du nicht 2 Aufruf sichert und auf der Grundlage der Bedingung verwenden, die erforderlichen Rückruf.
Zu implementieren, schreibt es 2 Methoden in Ihrer Schnittstelle und pass-eine Art Flagge zu wählen, Rückruf.
Ändern Sie Ihre Schnittstelle zu dieser.
Und Ihre Methode, um dieses
Ja der wiederverwendbaren Nutzung onSucces, wo immer Sie haben nur eine callback verwenden Sie, wenn Sie mehr als eine haben.