お使いのブラウザは、バージョンが古すぎます。

このサイトは、Internet Explore8・Internet Explore9には対応しておりません。
恐れ入りますが、お使いのブラウザをバージョンアップしていただきますよう宜しくお願いいたします。

【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);

 
 
本当に処理を出しただけ、という感じなので
次回はこのクラスにもう少し色を足して行きたいと思います。

コメントをどうぞ

メールアドレスは公開されません。* が付いている欄は必須項目です。


お気軽にお問い合わせください。

日本VTR実験室では、お仕事のご依頼、ブログ・コラムのご感想などを受け付けております。
アプリ開発・コンテンツ制作でお困りでしたら、お気軽にご相談ください。
ご連絡お待ちしております。

お問い合わせはこちらから

03-3541-1230

info@nvtrlab.jp

電話受付対応時間:平日AM9:30〜PM6:00