[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);
}
});
Comments are currently closed.