Android中级第三讲--如何复用AlertDialog
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处!
All Rights Reserved !
看了很多关于AlertDialog的文章,很少提起复用的问题
一般情况下整齐一点的调用只有下面这样:
看了很多关于AlertDialog的文章,很少提起复用的问题
一般情况下整齐一点的调用只有下面这样:
1、定义final标志
final int TIME_DIALOG = 1, REPEAT_DIALOG = 2, EVERY_DIALOG = 3, DATE_DIALOG2 = 4;
2、准备生成Dialog方法
/**
* 创建对话框
*/
@Override
public Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
/**
* 开始
*/
case TIME_DIALOG:
//处理逻辑
break;
default:
break;
}
return dialog;
}
3、在方法中调用
/**
* 时间按钮点击事件
*/
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,不能实现dialog的复用在下经常长时间研究,终于想出如下办法,
简单来说,之前就是做一个操作,要new一个dialog,然后show
现在就是只new一个dialog,每次处理逻辑传给dialog一个标记,如1,2,3,然后在dialog调用的doBatch(int id) ,根据id来处理不同的业务。
将上面的逻辑实现过程,简化为:
1、调用创建方法
在xml文件中给button定义 android:onClick="myClickHandler" 方法
具体参见:巧妙的OnClick监听使用,不用再写btn.setOnclickListener
case R.id.contact_batch_del: openDialog(AppData.DIALOG1); break; case R.id.contact_batch_star: openDialog(AppData.DIALOG2); break;
2、创建dialog
public void openDialog(final int id) {
new AlertDialog.Builder(context)
.setPositiveButton(R.string.contact_ok, new
DialogInterface.OnClickListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked OK so do some stuff
*/
doBatch(id);
}
}).setNegativeButton(R.string.contact_cancel, new
DialogInterface.OnClickListener() {
public void onClick
(DialogInterface dialog, int
whichButton) {
/*
* User
*
* clicked Cancel so do some stuff
*/
dialog.dismiss();
}
}).create().show();
}3、执行内部方法
public void doBatch(int id) {
switch (id) {
case AppData.DIALOG1:
int count = oaController.delContactList(chosenList);
Tools.showToast(context, "有" + count + "个联系人被处理!");
break;
case AppData.DIALOG2:
count = oaController.starContactList(chosenList);
Tools.showToast(context, "有" + count + "个联系人被处理!");
break;
default:
break;
}
}如此以来,大功告成!
本人特别喜欢整齐而又简单的代码,复用性强。
本博出自博主手书,转载请说明出处,以规避法律责任!谢谢合作!
浙公网安备 33010602011771号