5

Ich bin ein iOS-Entwickler, der mit dem Erlernen von Android beginnt. In Swift ist das Erstellen eines Completion-Handlers sehr einfach, aber ich finde immer noch keinen Weg, dies in Java zu tun.Erstellen eines benutzerdefinierten Abschluss-/Callback-Handlers zum Zurückgeben von Objekten nach Abschluss einer HTTP-Anforderung

Es tut mir leid, wenn diese Frage für StackOverflow Leute zu noob ist.

Problem

ich eine Klasse bin die Schaffung all meine HTTP-Anforderung zu handhaben, die Nachrüstung erfolgt über.

Ich mache diese Funktion meine RequestHelper.java

public static void checkEmailAvailability(String email) { 
    MyWebServiceAPI serviceAPI = retrofit.create(MyWebServiceAPI.class); 

    Call<APIResults> call = serviceAPI.checkEmailAvailability(getAuthenticationHeader(), RequestBody.create(MediaType.parse("text/plain"), email)); 

    call.enqueue(new Callback<APIResults>() { 
     @Override 
     public void onResponse(retrofit.Response<APIResults> response, Retrofit retrofit) { 
       //Parse Response Json 
       //Get some value and place it inside an object 
      //ANDI WOULD LIKE RETURN SOME BOOLEAN VALUE AND SOME OTHER STRING 
     } 

     @Override 
     public void onFailure(Throwable t) { 
       //I WOULD LIKE A BOOLEAN VALUE HERE    
     } 
    }); 
} 

ist ich es so nennen von meinem MainActivity

RequestHelper.checkEmailAvailability("[email protected]"); 

Nun wird die Funktion immer noch leer ist, aber ich möchte es etwas nach dem zurückkehren auf der onResponse und onFailure Methode.

Irgendwelche Gedanken bitte?

Antwort

1

Sie sollten das Objekt Callback als Parameter an die checkEmailAvailability() übergeben.

Und die Schnittstelle implementieren, wenn Sie die Methode von Ihrem MainActivity aufrufen und verwenden Sie den response Parameter in der onXXX() Methode, da die Daten UI aktualisieren zurückgegeben.

+0

Ich möchte einen anderen Callback (Custom) haben. Weil ich die Antwort analysieren und den Wert in einem Callback zurückgeben werde. – JayVDiyk

+0

@JayVDiyk Sie können etwas tun wie: öffentliche void checkEmailAvailability (String-E-Mail, letzten Callback Listener) und onResponse if (Listener! = Null) { listener.success (Retrofit, Antwort); } onFailure if (Listener! = Null) { listener.failure (t); – JoCuTo

+0

@JeCuRo Danke für die Antwort. Sagen wir. Ich möchte einen booleschen Wert im Callback zurückgeben. Wie würde ich es machen? – JayVDiyk