看了很多关于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]
/**
* 时间按钮点击事件
*/
***lickListener(new ***kListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG);
}
});
/**
* 重复按钮点击事件
*/
***lickListener(new ***kListener() {
@Override
public void onClick(View v) {
showDialog(REPEAT_DIALOG);
}
});
/**
* 时间按钮点击事件
*/
***lickListener(new ***kListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG);
}
});
/**
* 重复按钮点击事件
*/
***lickListener(new ***kListener() {
@Override
public void onClick(View v) {
showDialog(REPEAT_DIALOG);
}
});
但实际上,这样仍然需要创建多个dialog,不能实现dialog的复用在下经常长时间研究,终于想出如下办法:
1、调用创建方法
[html]
case ***t_batch_del:
openDialog(***1);
break;
case ***t_batch_star:
openDialog(***2);
break;
case ***t_batch_del:
openDialog(***1);
break;
case ***t_batch_star:
openDialog(***2);
break;
2、创建dialog
[html]
public void openDialog(final int id) {
new ***r(context)
.setPositiveButton(***t_ok, new
***kListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked OK so do some stuff
*/
doBatch(id);
}
}).setNegativeButton(***t_cancel, new
***kListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked Cancel so do some stuff
*/
***s();
}
}).create().show();
}
public void openDialog(final int id) {
new ***r(context)
.setPositiveButton(***t_ok, new
***kListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked OK so do some stuff
*/
doBatch(id);
}
}).setNegativeButton(***t_cancel, new
***kListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked Cancel so do some stuff
*/
***s();
}
}).create().show();
}
3、执行内部方法
[html]
public void doBatch(int id) {
switch (id) {
case ***1:
int count = ***tactList(chosenList);
***ast(context, "有" + count + "个联系人被处理!");
break;
case ***2:
count = ***ntactList(chosenList);
***ast(context, "有" + count + "个联系人被处理!");
break;
default:
break;
}
}
public void doBatch(int id) {
switch (id) {
case ***1:
int count = ***tactList(chosenList);
***ast(context, "有" + count + "个联系人被处理!");
break;
case ***2:
count = ***ntactList(chosenList);
***ast(context, "有" + count + "个联系人被处理!");
break;
default:
break;
}
}
如此以来,大功告成!
本人特别喜欢整齐而又简单的代码,复用性强。
本博出自博主手书,转载请说明出处,以规避法律责任!谢谢合作!
(责任编辑:)