2007/03/04開始。ソフトウェア管理やDelerer SEの作者であるおにぎりくんの試行錯誤の記録です。
- [Vue.js]時計?タイムコードを表示するWebアプリ
- (2021/11/16)
- ポエム
- (2020/09/30)
- メトロノームアプリをリリース
- (2017/04/22)
- Sikulix勉強中:便利関数
- (2017/02/25)
- [JavaFX]学習メモ
- (2016/09/22)
AndroidではAlertDialogというクラスを使って自分の好きなダイアログを作ることができます。AlertDialog.Builder#setViewメソッドでビューを追加することで自由なレイアウトの画面が作れます。Activityを作ったりAndroidManifest.xmlを修正したりすることなく、画面を増やすことができます。手軽で素敵。
しかし、このダイアログのせいでイベントリスナーがActivityにたくさん追加されていくのです。
しかし、このダイアログのせいでイベントリスナーがActivityにたくさん追加されていくのです。
Activityとダイアログの処理(特にイベントリスナー)は別になってほしい。そこでAlertDialog.Builderを使うときはクラスをひ とつ増やして、その中で使うようにしています。NancharaDialogを作ったとして、こんなコードを書いてます。
public class NancharaDialog implements DialogInterface.OnItemClick {
public NancharaDialog(必要なオブジェクト){
必要なオブジェクトをフィールドで保持
ビューとダイアログを作成
}
public void show(){
ダイアログを表示
}
public void onItemClicked(...){
イベントに応じた処理、ここで更にダイアログを作成して開くことも。
}
}
こんなのがダイアログごとに量産されるのは、ちょっと気持ち悪い。。。
Activityの処理と混ざるよりはマシということで妥協してます。
もっといい書き方ないかなぁ。
public class NancharaDialog implements DialogInterface.OnItemClick {
public NancharaDialog(必要なオブジェクト){
必要なオブジェクトをフィールドで保持
ビューとダイアログを作成
}
public void show(){
ダイアログを表示
}
public void onItemClicked(...){
イベントに応じた処理、ここで更にダイアログを作成して開くことも。
}
}
こんなのがダイアログごとに量産されるのは、ちょっと気持ち悪い。。。
Activityの処理と混ざるよりはマシということで妥協してます。
もっといい書き方ないかなぁ。
PR
スポンサード・リンク
この記事にコメントする
フリーソフト指向::開発日記 by LapisCactus