Android中级第三讲--如何复用AlertDialog
来源:互联网 发布:68淘宝小号官网 编辑:程序博客网 时间:2024/04/29 08:16
博客出自: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方法
/** * 创建对话框 */@Overridepublic Dialog onCreateDialog(int id) {Dialog dialog = null;switch (id) {/** * 开始 */case TIME_DIALOG://处理逻辑break;default:break;}return dialog;}
3、在方法中调用
/** * 时间按钮点击事件 */btntime.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {showDialog(TIME_DIALOG);}});/** * 重复按钮点击事件 */btnrepeat.setOnClickListener(new View.OnClickListener() {@Overridepublic 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, newDialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, intwhichButton) {/* * User * * clicked OK so do some stuff */doBatch(id);}}).setNegativeButton(R.string.contact_cancel, newDialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, intwhichButton) {/* * 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;}}
如此以来,大功告成!
本人特别喜欢整齐而又简单的代码,复用性强。
本博出自博主手书,转载请说明出处,以规避法律责任!谢谢合作!
- Android中级第三讲--如何复用AlertDialog
- Android中级第一讲--如何学习Android自带的demo项目
- Android中级第四讲--相机程序开发
- Android中级第九讲--相机调焦
- Android中级第十二讲浅谈架构设计
- Android中级第十二讲之DNS问题
- Android中级第二讲--制作搜索页面,使用TextWatcher
- Android中级第五讲--GPRS定位的实现
- Android中级第六讲--相机对焦功能实现
- Android中级第五讲--GPRS定位的实现
- Android[中级教程]第三章 数据存储之SQLite
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- android-如何关闭AlertDialog.Builder对话框
- 第三讲:Android模拟器的使用
- struts2核心配置
- Spring 数据访问策略
- 关于行内元素和块级元素的一些认识
- 基于VC6.0的抓取TCP/IP数据包的C++实现
- 当东楼撞上西门 “野路子”程序员写的山寨C++的书 《0 bug——C/C++商用工程之道》
- Android中级第三讲--如何复用AlertDialog
- JDBC连接数据库的两种方法
- CSS字体通用字体组合
- matlab生成vs可以调用文件 的输入命令
- 类对象的sizeof大小
- 操作系统的考点
- struts的bean标签使用message
- 函数名与函数指针
- Hibernate的org.hibernate.dialect.Oracle9Dialect错误