标签:
/** * 自定义Dialog监听器 * @author Kael.Chen * */ public interface PriorityListener { /** * 回调函数,用于在Dialog的监听事件触发后刷新Activity的UI显示 */ public void refreshPriorityUI(); }
2、为自定义Dialog增加带监听器参数的构造函数:
private PriorityListener listener; public PriorityDlg(Context context) { super(context); this.context = context; // TODO Auto-generated constructor stub } public PriorityDlg(Context context, int theme) { super(context, theme); this.context = context; } public PriorityDlg(Context context, int theme, PriorityListener listener) { this(context, theme); this.listener = listener; }
3、在Dialog中需要的地方去调用回调函数,比如在ListView的选择事件触发时:
dlg_priority_lvw.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { dismiss(); listener.refreshPriorityUI(); } });
4、然后你在Activity中使用带监听器参数的构造函数去实例化自定义Dialog,并实现监听器中声明的回调函数就可以了:
//为优先级选择按钮增加监听器 task_simple_form_priority.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //弹出任务优先级选择对话框 PriorityDlg dlg = new PriorityDlg(SimpleTaskActivity.this, R.style.dlg_priority, new PriorityDlg.PriorityListener() { @Override public void refreshPriorityUI() { //这里就是用来刷新Activity的UI显示的,如果你需要用到从Dialog传回的数据,你可以把该数据存储在全局变量中或者作为回调函数的参数传递进来 Toast.makeText(SimpleTaskActivity.this, "完成选择", Toast.LENGTH_SHORT).show(); } }); dlg.show(); } });
标签:
原文地址:http://www.cnblogs.com/zhujiabin/p/4192554.html