1. ホーム
  2. android

[解決済み] Androidでコールバックを定義するには?

2022-04-27 08:37:46

質問

直近のGoogle IOで、レストフルクライアントアプリケーションの実装に関するプレゼンテーションがありました。残念ながら、それはハイレベルな議論に過ぎず、実装のソースコードはありませんでした。

この図では、戻り経路上に、他のメソッドへのさまざまな異なるコールバックがあります。

これらのメソッドが何であるかは、どのように宣言するのですか?

コールバックとは、あるイベントが発生した後に呼び出されるコード片のことで、そのアイデアは理解できるのですが、どのように実装すればよいのかわかりません。これまで私がコールバックを実装した唯一の方法は、さまざまなメソッド(たとえばonActivityResult)をオーバーライドすることでした。

デザインパターンの基本は理解しているつもりなのですが、リターンパスをどうするかでつまづいてばかりです。

どのように解決するのですか?

多くの場合、インターフェースを持っていて、それを実装したオブジェクトを渡します。例えば、ダイアログはOnClickListenerを持っています。

適当に例えると

// The callback interface
interface MyCallback {
    void callbackCall();
}

// The class that takes the callback
class Worker {
   MyCallback callback;

   void onEvent() {
      callback.callbackCall();
   }
}

// Option 1:

class Callback implements MyCallback {
   void callbackCall() {
      // callback code goes here
   }
}

worker.callback = new Callback();

// Option 2:

worker.callback = new MyCallback() {

   void callbackCall() {
      // callback code goes here
   }
};

おそらく選択肢2の構文がぐちゃぐちゃになってしまったのでしょう。早い話が。