【Android Tips】AlertDialog作成をまとめるクラスを作る①~呼び出しはshowDialog()で
プログラミングをするときは、すっきり分かりやすいコードの方が自分にも周りにも優しいです。
コードが冗長にならないためにはクラスを作ろう!ということで、今回はAlertDialogをクラスにまとめて、showDialog()で呼び出してみます。
AlertDialog って1つ作るだけで数行は使うし、たくさんダイアログを出すアプリだと、それだけでコードが冗長になっちゃいますよね。
私の書くコードはただでさえ長くなってしまいがちなので(汗)
少しでも短く出来るよう、ダイアログの作成はまとめて別クラスに移すことにしました。
まず、ダイアログの表示にはshowDialog()を使います。
これはダイアログをActivityに管理させるためです。
こうしておけば、画面の回転などActivityの状態に応じて、適宜ダイアログを出し入れしてくれます。
次に、ダイアログのonClickなどの処理はActivityで行います。
つまり、これから作るクラスは単純にダイアログの生成だけとまとめたクラスということです。
ではではさっそく。
ダイアログ作成用に新たにクラスを作ります。
コンストラクタなどを使って、Activityを渡せるようにしておきます。
メインに使うメソッドは以下の様になります。
public AlertDialog CreateDialog(int id){ AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(activity); switch(id){ case 100: alertDialogBuilder.setTitle("エラー"); alertDialogBuilder.setMessage("このファイルは開けません。"); alertDialogBuilder.setPositiveButton("OK",(OnClickListener) activity); break; } alertDialogBuilder.setCancelable(false); alertDialogBuilder.setOnCancelListener((OnCancelListener) activity); AlertDialog alertDialog = alertDialogBuilder.create(); return alertDialog; }
アラートごとに異なる記述はcase文の中に、
ダイアログで共通の記述はまとめて書いています。
呼び出し元のActivityではonCreateDialog()メソッドをオーバーライドします。
onCreateDialog()は、初めてダイアログが生成される時に呼ばれるメソッドです。
このメソッドの戻り値が先程作ったクラスの戻り値になるよう、修正します。
@Override protected Dialog onCreateDialog(int id) { if(customDialog == null){ customDialog = new CustomDialog(this); } alertDialog = null; alertDialog = customDialog.CreateDialog(id); return alertDialog; }
これでダイアログを作る処理は外部のクラスに移行できました。
実際にダイアログを呼び出す時は通常通り、showDialog()で呼び出します。
showDialog(100);
本当に処理を出しただけ、という感じなので
次回はこのクラスにもう少し色を足して行きたいと思います。
コメントをどうぞ