android Dialog 监听返回事件(back)

一个对话框一般是一个出现在当前Activity之上的一个小窗口. 处于下面的Activity失去焦点, 对话框接受所有的用户交互. 对话框一般用于提示信息和与当前应用程序直接相关的小功能.

  Android API 支持下列类型的对话框对象:

  警告对话框 AlertDialog: 一个可以有0到3个按钮, 一个单选框或复选框的列表的对话框. 警告对话框可以创建大多数的交互界面, 是推荐的类型.

  进度对话框 ProgressDialog: 显示一个进度环或者一个进度条. 由于它是AlertDialog的扩展, 所以它也支持按钮.

  日期选择对话框 DatePickerDialog: 让用户选择一个日期.

  时间选择对话框 TimePickerDialog: 让用户选择一个时间.

  如果你希望自定义你的对话框, 可以扩展Dialog类.

  Showing a Dialog 显示对话框

  一个对话框总是被创建和显示为一个Activity的一部分. 你应该在Activity的onCreateDialog(int) 中创建对话框. 当你使用这个回调函数时,Android系统自动管理每个对话框的状态并将它们和Activity连接, 将Activity变为对话框的”所有者”. 这样,每个对话框从Activity继承一些属性. 例如,当一个对话框打开时, MENU键会显示Activity的菜单, 音量键会调整Activity当前使用的音频流的音量.

  注意: 如果你希望在onCreateDialog()方法之外创建对话框, 它将不会依附在Activity上. 你可以使用setOwnerActivity(Activity)来将它依附在Activity上.

  当你希望显示一个对话框时, 调用showDialog(int)并将对话框的id传给它.

  当一个对话框第一次被请求时,Android调用onCreateDialog(int). 这里是你初始化对话框的地方. 这个回调函数传入的id和showDialog(int)相同. 创建对话框之后,将返回被创建的对象.

  在对话框被显示之前,Android还会调用onPrepareDialog(int, Dialog). 如果你希望每次显示对话框时有动态更改的内容, 那么就改写这个函数. 该函数在每次一个对话框打开时都调用. 如果你不定义该函数,则对话框每次打开都是一样的. 该函数也会传入对话框的id以及你在onCreateDialog()中创建的Dialog对象.

/**
	 * Dialog 监听返回事件
	 * @author lizhiting
	 *
	 */
	public class DialogOnKeyListener implements OnKeyListener {
 
		@Override
		public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
			if (keyCode == KeyEvent.KEYCODE_BACK&& event.getRepeatCount() == 0) {
				if (!dangTopWeb.canGoBack() && INIT_FLAG ==0){
 
						DangTopActivity.this.finish();
 
				}else {
					DangTopActivity.this.dialog.hide();
					dangTopWeb.stopLoading();
				}
 
 
			}
			return false;
		}
 
	}
 
  
本文转自:http://www.lepeng.net/blogger/?p=172

Android中,我们通常可以使用Dialog类来创建对话框。当我们创建一个对话框时,默认情况下,点击对话框的外部区域是不会关闭对话框的。但是,有时候我们可能需要在点击外部区域时关闭对话框。要实现这个功能,我们可以通过设置对话框的属性来实现。 一种常见的方法是使用Dialog类的setCanceledOnTouchOutside(boolean)方法。当我们想要点击外部区域时关闭对话框时,我们可以调用该方法并将参数值设置为true。例如,如果我们有一个名为dialog的对话框对象,我们可以使用以下代码来实现: dialog.setCanceledOnTouchOutside(true); 这样,当我们点击对话框外部区域时,对话框将会自动关闭。 另一种方法是使用Dialog类的setOnCancelListener(OnCancelListener)方法。我们可以通过实现OnCancelListener接口并重写onCancel()方法来监听对话框的取消事件。例如,我们可以创建一个名为cancelListener的OnCancelListener对象,然后将其设置给对话框,如下所示: dialog.setOnCancelListener(cancelListener); 在cancelListener的onCancel()方法中,我们可以添加我们想要执行的关闭对话框的代码,例如: @Override public void onCancel(DialogInterface dialog) { dialog.dismiss(); } 当我们点击对话框的外部区域时,onCancel()方法将会被调用,从而实现关闭对话框的功能。 无论是使用setCanceledOnTouchOutside()方法还是setOnCancelListener()方法,都能够实现对话框点击外部区域事件的处理。根据具体的需求,我们可以选择其中一种方法来实现。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值