[解決済み] 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の構文がぐちゃぐちゃになってしまったのでしょう。早い話が。
関連
-
AndroidStudio3.0 Error:Execution failed for task ':app:processDebugResources'.
-
Android TextViewにandroid:ellipsize=endのバグがある。
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み] コールバック内で正しい `this` にアクセスする方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
aapt2エラー:ログを確認する(具体的な原因の探り方)
-
gitlab 設定エラー。リモートリポジトリから読み込めなかったか、ホストキーの検証に失敗しました。
-
cygwinのダウンロード、インストールチュートリアル、およびCDTの「makeプログラムがパスに見つからない」バグの解消
-
AndroidがMainActivityが包含クラスでないというエラーを報告する
-
ArrayAdapter は、リソース ID が TextView であることが必要です。
-
指定された子にはすでに親がいます。まず、その子の親に対して removeView() をコールする必要があります。
-
ライブラリをモジュールとしてインポートする際にエラーが発生しました。Error:A problem occurred configuring project ':library'.
-
エラータイプ 3 タイプエラー, Error: アクティビティクラス{}が存在しません。アクティビティ起動時のエラー 解決方法
-
Androidの美しいSeekBarスタイルのカスタマイズ
-
android studioが新しいプロジェクトを作成しますが、プロジェクトの同期に成功するまでデザインエディタが使用できません。