Android 里的对话框Dialog 实现机制基础

Dialogs 对话框通常都是出现在当前活动的前面,当当前活动弹出对话框后, 当前活动将失去焦点,而对话框将完成与用户交互的任务。对话框通常拿来当通知使用,临时中断用户 当前操作完成一个与当前活动直接相关的小工作,比如登录成功提示框及进度条。 Dialog 类是创建对话框的基类,然而,通常我们并不实例化一个Dialog,取而代之,我们使用如下的 子类: AlertDialog: 一个通常可以带0,1,2个按钮,还可以包含单选或复选的列表。推荐使用, 它通常足够满足用户界面的需要了。 ProgressDialog: 显示为一个进度轮或进度条,因为它是扩展了的AlertDialog,它也同样支持按钮。 DatePickerDialog: 提供用户选择日期的对话框。 TimePickerDialog: 提供用户选择时间的对话框。 显示一个对话框 对话框通常都作为一个活动的一部分而被创建、显示, 通常我们可以重写活动内置的“onCreateDialog(int)”回调方法来创建。当我们重写了这个 回调查方法后,Android系统将自动管理对话框的状态,并将它与当前的活动关联, 某个活动将拥有对话框。也因此,对话框会继承活动的某些属性,例如:当一个对话框打开, 点击“Menu"按钮将显示此活动的"Options menu",音量键也将被活动用来调整音频流。 注意:如果对话框不是通过"onCreateDialog"方法创建的,那么意味着它没有被关联到一个活动 此时,必须调用“setOwnerActivity(Activity)”方法将它关联到一个对话框。 调用“showDialog(int)”来显示一个对话框,传递的整数是一个唯一值,用来标识当前要显示的对话框。 对话框第一次被请求时创建,系统将调用活动的“onCreateDialog(int)”,在此活动中实例化一个Dialog, “onCreateDialog(int)”,“showDialog(int)”两个方法传入的整数是一样的。 一个对话框在显示前,系统都将调用回调方法“onPrepareDialog(int,Dialog)”,所以,如果可以通过 重写此方法可以动态修改对话框。由于"onCreateDialog(int)"只在第一次被请求时创建,所以, 后面再显示时将保持不变。"onPrepareDialog(int,Dialog)"这里的整型参数也与创建、显示时的一样。 当需要用到多个对话框的时候,我们最好在“onCreateDialog(int)”及“onPrepareDialog(int,Dialog)” 方法里Switch,通过对话框的唯一值(创建时传入的整型参数)用来判断一个每个对话框是否创建。 如: static final int DIALOG_PAUSED_ID=0; static final int DIALOG_GAMEOVER_ID=1; 而在“onCreateDialog(int)”回调查方法里: protected Dialog onCreateDialog(int id) { Dialog dilog; switch(id) { case DIALOG_PAUSED_ID: { //do the work to define the pause dialog BREAK; } case DIAOLG_GAMEOVER_ID: { // BREAK; } default: dialog=null; } return dialog; } 显示一个对话框:showDialog(DIALOG_GAMEOVER_ID); ---------------------------------------------------------------

清除对话框

当我们创建一个对话框并将它关联到一个活动后,活动将始终维护对话框的状态,如果确定活动不再需要对话框后, 可以让对话框调用dismiss()来自行清除,更为高效的做法是调用活动的dismissDialog(int),传递的整型数据 与创建时传入的一致。 也许有时我们需要在对话框被清除时处理一些业务,此时我们实现接口:DialogInterface.OnDismissListener, 这个接口只有一个方法:onDismiss(dialogInterface),此方法将在对话框被清除时调用。将接口的实现传递给 setOnDismissListener()。 一个对话框也可以被“取消”,如用户点出了“back”回退或点击“Cancel”按钮明确取消,此时并不会触发“onDismissListener”. 此类事件可以通过下面的方法进行捕获:DialogInterface.OnCancelListener,并 setOnCancelListener();

参考资料:http://developer.android.com/guide/topics/ui/dialogs.html


转:http://www.cnblogs.com/runner/archive/2011/12/04/2275293.html


更多相关文章

  1. Android上获得系统root权限的方法
  2. 更新Android(安卓)SDK 访问谷歌等无需代理方法
  3. android开发基础
  4. Handler内存泄漏和解决方法
  5. 网络获取图片的方法的重写--较简洁(如果手机缓存里面有就从缓存
  6. service(改)
  7. 基于 Android(安卓)NDK 的学习之旅-----Java 调用C(附源码)
  8. 深入剖析Android消息机制原理
  9. Unity调用Android(安卓)jar包方法——(三、使用UnitySendMessage

随机推荐

  1. Android Handler 四个使用实例 及Handler
  2. android 百分比布局percentFrameLayout,p
  3. Android使用Java Web服务器作为中转实现
  4. Android系统启动流程(1) —— 解析init进
  5. java.lang.NoClassDefFoundError: com.go
  6. 打造android ORM框架opendroid(五)——数
  7. **Android** 基础(一)
  8. speex编解码在android上实现
  9. android学生管理系统,利用linerLayout,实现
  10. Android集成友盟QQ、空间分享、微信、微