2012年12月4日火曜日

[Android]ダイアログ作成コピペ

ダイアログ作成処理をActivityのライフサイクルに乗せる用のコピペ。
自分でダイアログ表示してもいいですが、メモリリークするので、
ライフサイクルに乗せた方がベターです。


==============
Before
==============
// メソッド呼ばれたらその場でダイアログ表示する
    private Dialog createErrorDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(R.string.dialog_title)
            .setMessage(R.string.dialog_message_error)
            .setPositiveButton(R.string.dialog_button_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == DialogInterface.BUTTON_POSITIVE) {
dialog.dismiss();
}
}
});
        builder.create().show();
    }
==============


==============
After
==============
final int DIALOG_ERROR_1 = 1;
    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DIALOG_ERROR_1:
            return createErrorDialog();
        default:
            return null;
        }
    }

// メソッド呼ばれたら、Dialog作成
    private Dialog createErrorDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(R.string.dialog_title)
            .setMessage(R.string.dialog_message_error)
            .setPositiveButton(R.string.dialog_button_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == DialogInterface.BUTTON_POSITIVE) {
dialog.dismiss();
}
}
});
        return builder.create();
    }


// ボタンクリックされたら、ダイアログ表示
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// ダイアログ表示
showDialog(DIALOG_ERROR_1);
}
});

0 件のコメント:

コメントを投稿