Ich habe diese beiden Methoden erklärt:Wie man einen Wert von einer inneren Schnittstelle in Methode zurückgibt?
private Result mResult;
private void setResult(Result result){
this.mResult = result;
}
private Result getResult(){
new Executor(new OnResultListener() {
@Override
public void onResult(Result result) {
setResult(result);
}
}).execute();
return mResult;
}
Im über eine Schnittstelle, während ein AsyncTask ausgeführt wird. Was mein Problem ist, ist, dass ich das Objekt Result der Methode onResult als ein Objekt an die Methode getResult() zurückgeben möchte.
Wie oben gezeigt, habe ich versucht, es durch einen Setter zu setzen, aber es scheint, dass dies nicht funktioniert.
Wie kann ich das schaffen? Vielen Dank im Voraus!
Sie können einfach nicht tun. Sie können Handler/LocalBroadcast/EventBus verwenden, um eine Nachricht asynchron zu übergeben. Eine andere Möglichkeit wäre, eine Klasse zu erstellen, die AsyncTask erweitert. Wenn dann der Prozess beendet ist, rufen Sie eine Callback-Methode auf, um die Änderungen oder neuen Daten zu aktualisieren. –
Haben Sie versucht, die mResult-Kennung in 'static' zu ändern? Und nenn es einfach so in 'onResult':' mResult = result; '? Wenn das nicht funktioniert, was ist mit einer Schnittstelle? –
Sie haben einen asynchronen Rückruf und möchten das Ergebnis von einem blockierenden Getter erhalten. Ich denke, du solltest deine Code Logik überprüfen. Was willst du wirklich erreichen? Ich denke, Ihr Problem könnte einfach durch die Implementierung einer Schnittstelle gelöst werden – FrenchFalcon