GettingSignals

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

2012年12月4日
Posted by hina

ダイアログ作成処理を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);
}
});
Share

Comments are currently closed.

Follow

カレンダー

2024年4月
1234567
891011121314
15161718192021
22232425262728
2930