如何复用AlertDialog
看了很多关于AlertDialog的文章,很少提起复用的问题
一般情况下整齐一点的调用只有下面这样:
1、定义final标志
[html]
final int TIME_DIALOG = 1, REPEAT_DIALOG = 2, EVERY_DIALOG = 3,
DATE_DIALOG2 = 4;
final int TIME_DIALOG = 1, REPEAT_DIALOG = 2, EVERY_DIALOG = 3,
DATE_DIALOG2 = 4;
2、准备生成Dialog方法
[html]
/**
* 创建对话框
*/
@Override
public Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
/**
* 开始
*/
case TIME_DIALOG:
//处理逻辑
break;
default:
break;
}
return dialog;
}
/**
* 创建对话框
*/
@Override
public Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
/**
* 开始
*/
case TIME_DIALOG:
//处理逻辑
break;
default:
break;
}
return dialog;
}
2、在方法中调用
[html]
/**
* 时间按钮点击事件
*/
btntime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG);
}
});
/**
* 重复按钮点击事件
*/
btnrepeat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(REPEAT_DIALOG);
}
});
/**
* 时间按钮点击事件
*/
btntime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG);
}
});
/**
* 重复按钮点击事件
*/
btnrepeat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(REPEAT_DIALOG);
}
});
但实际上,这样仍然需要创建多个dialog,不能实现dialog的复用在下经常长时间研究,终于想出如下办法:
1、调用创建方法
[html]
case R.id.contact_batch_del:
openDialog(AppData.DIALOG1);
break;
case R.id.contact_batch_star:
openDialog(AppData.DIALOG2);
break;
case R.id.contact_batch_del:
openDialog(AppData.DIALOG1);
break;
case R.id.contact_batch_star:
openDialog(AppData.DIALOG2);
break;
2、创建dialog
[html]
public void openDialog(final int id) {
new AlertDialog.Builder(context)
.setPositiveButton(R.string.contact_ok, new
DialogInte易做图ce.OnClickListener() {
public void onClick
(DialogInte易做图ce dialog, int
whichButton) {
/*
* User
*
* clicked OK so do some stuff
*/
doBatch(id);
}
}).setNegativeButton(R.string.contact_cancel, new
DialogInte易做图ce.OnClickListener() {
public void onClick
(DialogInte易做图ce dialog, int
whichButton) {
/*
* User
*
* clicked Cancel so do some stuff
*/
dialog.dismiss();
}
补充:移动开发 , Android ,