は、私はこれらの2つの方法が宣言している:メソッドの内部インターフェイスから値を返す方法は?
AsyncTaskの実行中にインタフェースを使用して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;
}
イムを。私の問題は、のResultオブジェクトをメソッドのオブジェクトとしてgetResult()メソッドに返すことです。
上記のように、私はセッターを介して設定しようとしましたが、これは動作していないようです。
どうすればそれを成功させることができますか? ありがとうございます!
:より良い方法は、コールバックを使用することです。 Handler/LocalBroadcast/EventBusを使用して、非同期の方法でメッセージを渡すことができます。別の方法は、AsyncTaskを拡張するクラスを作成し、プロセスが終了したときにコールバックメソッドを呼び出して変更または新しいデータを作成することです。 –
mResult識別子を 'static'に変更しようとしましたか?そして、 'onResult'の中で' mResult = result; 'のように呼び出すだけです。それでも問題が解決しない場合は、インターフェイスの使用はどうですか? –
非同期コールバックがあり、その結果をブロッキングゲッターで取得したいとします。 私はあなたのコードロジックを見直さなければならないと思います。あなたは本当に何を達成したいのですか? あなたの問題は単にインターフェイスを実装することで解決できると思います – FrenchFalcon