Activities提供了一种方便管理的创建、保存、回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的话,Activity将通过getOwnerActivity()方法返回该Activity管理的对话框(dialog).

  onCreateDialog(int):当你使用这个回调函数时,Android系统会有效的设置这个 Activity为每个对话框的所有者,从而自动管理每个对话框的状态并挂靠到Activity上。这样,每个对话框继承这个Activity的特定属 性。比如,当一个对话框打开时,菜单键显示为这个Activity定义的选项菜单,音量键修改Activity使用的音频流。

  showDialog(int): 当你想要显示一个对话框时,调用 showDialog(int id) 方法并传递一个唯一标识这个对话框的整数。当对话框第一次被请求时,Android从你的Activity中调用onCreateDialog(int id),你应该在这里初始化这个对话框Dialog。这个回调方法被传以和showDialog(int id)相同的ID。当你创建这个对话框后,在Activity的最后返回这个对象。

  onPrepareDialog(int, Dialog):在对话框被显示之前,Android还调用了可选的回调函数onPrepareDialog(int id, Dialog). 如果你想在每一次对话框被打开时改变它的任何属性,你可以定义这个方法。这个方法在每次打开对话框时被调用,而onCreateDialog(int) 仅在对话框第一次打开时被调用。如果你不定义onPrepareDialog(),那么这个对话框将保持和上次打开时一样。这个方法也被传递以对话框的 ID,和在onCreateDialog()中创建的对话框对象。

  dismissDialog(int):当 你准备关闭对话框时,你可以通过对这个对话框调用dismiss()来消除它。如果需要,你还可以从这个Activity中调用 dismissDialog(int id) 方法,这实际上将为你对这个对话框调用dismiss() 方法。 如果你想使用onCreateDialog(int id) 方法来管理你对话框的状态(就如同在前面的章节讨论的那样),然后每次你的对话框消除的时候,这个对话框对象的状态将由该Activity保留。如果你决 定不再需要这个对象或者清除该状态是重要的,那么你应该调用removeDialog(int id)。这将删除任何内部对象引用而且如果这个对话框正在显示,它将被消除。

下面是几种对话框的效果

          图1                      图2                      图3

          图4                      图5                      图6

          图7

图1效果:该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式。

代码:

创建对话框方法dialog()

  1. protected void dialog() {
  2. AlertDialog.Builder builder = new Builder(Main.this);
  3. builder.setMessage("确认退出吗?");
  4.  
  5. builder.setTitle("提示");
  6.  
  7. builder.setPositiveButton("确认", new OnClickListener() {
  8.  
  9. @Override
  10. public void onClick(DialogInterface dialog, int which) {
  11. dialog.dismiss();
  12.  
  13. Main.this.finish();
  14. }
  15. });
  16.  
  17. builder.setNegativeButton("取消", new OnClickListener() {
  18.  
  19. @Override
  20. public void onClick(DialogInterface dialog, int which) {
  21. dialog.dismiss();
  22. }
  23. });
  24.  
  25. builder.create().show();
  26. }

在onKeyDown(int keyCode, KeyEvent event)方法中调用此方法

  1. public boolean onKeyDown(int keyCode, KeyEvent event) {
  2. if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == ) {
  3. dialog();
  4. }
  5. return false;
  6. }

图2效果:改变了对话框的图表,添加了三个按钮

  1. Dialog dialog = new AlertDialog.Builder(this).setIcon(
  2. android.R.drawable.btn_star).setTitle("喜好调查").setMessage(
  3. "你喜欢李连杰的电影吗?").setPositiveButton("很喜欢",
  4. new OnClickListener() {
  5.  
  6. @Override
  7. public void onClick(DialogInterface dialog, int which) {
  8. // TODO Auto-generated method stub
  9. Toast.makeText(Main.this, "我很喜欢他的电影。",
  10. Toast.LENGTH_LONG).show();
  11. }
  12. }).setNegativeButton("不喜欢", new OnClickListener() {
  13.  
  14. @Override
  15. public void onClick(DialogInterface dialog, int which) {
  16. // TODO Auto-generated method stub
  17. Toast.makeText(Main.this, "我不喜欢他的电影。", Toast.LENGTH_LONG)
  18. .show();
  19. }
  20. }).setNeutralButton("一般", new OnClickListener() {
  21.  
  22. @Override
  23. public void onClick(DialogInterface dialog, int which) {
  24. // TODO Auto-generated method stub
  25. Toast.makeText(Main.this, "谈不上喜欢不喜欢。", Toast.LENGTH_LONG)
  26. .show();
  27. }
  28. }).create();
  29.  
  30. dialog.show();

图3效果:信息内容是一个简单的View类型

  1. new AlertDialog.Builder(this).setTitle("请输入").setIcon(
  2. android.R.drawable.ic_dialog_info).setView(
  3. new EditText(this)).setPositiveButton("确定", null)
  4. .setNegativeButton("取消", null).show();

图4效果:信息内容是一组单选框

  1. new AlertDialog.Builder(this).setTitle("复选框").setMultiChoiceItems(
  2. new String[] { "Item1", "Item2" }, null, null)
  3. .setPositiveButton("确定", null)
  4. .setNegativeButton("取消", null).show();

图5效果:信息内容是一组多选框

  1. new AlertDialog.Builder(this).setTitle("单选框").setIcon(
  2. android.R.drawable.ic_dialog_info).setSingleChoiceItems(
  3. new String[] { "Item1", "Item2" }, ,
  4. new DialogInterface.OnClickListener() {
  5. public void onClick(DialogInterface dialog, int which) {
  6. dialog.dismiss();
  7. }
  8. }).setNegativeButton("取消", null).show();

图6效果:信息内容是一组简单列表项

  1. new AlertDialog.Builder(this).setTitle("列表框").setItems(
  2. new String[] { "Item1", "Item2" }, null).setNegativeButton(
  3. "确定", null).show();

图7效果:信息内容是一个自定义的布局

1.布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_height="wrap_content" android:layout_width="wrap_content"
  4. android:background="#ffffffff" android:orientation="horizontal"
  5. android:id="@+id/dialog">
  6. <TextView android:layout_height="wrap_content"
  7. android:layout_width="wrap_content"
  8. android:id="@+id/tvname" android:text="姓名:" />
  9. <EditText android:layout_height="wrap_content"
  10. android:layout_width="wrap_content" android:id="@+id/etname" android:minWidth="100dip"/>
  11.  
  12. </LinearLayout>

2.调用代码

  1. LayoutInflater inflater = getLayoutInflater();
  2. View layout = inflater.inflate(R.layout.dialog,
  3. (ViewGroup) findViewById(R.id.dialog));
  4.  
  5. new AlertDialog.Builder(this).setTitle("自定义布局").setView(layout)
  6. .setPositiveButton("确定", null)
  7. .setNegativeButton("取消", null).show();

Android 对话框(Dialog)的更多相关文章

  1. Android 对话框(Dialog)大全 建立你自己的对话框

    Android 对话框(Dialog)大全 建立你自己的对话框 原文地址: http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html A ...

  2. 转 Android 对话框(Dialog)大全 建立你自己的对话框

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...

  3. Android 对话框(Dialog)大全

    转自: http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html Activities提供了一种方便管理的创建.保存.回复的对话框机制, ...

  4. Android 对话框(Dialog) 及 自己定义Dialog

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,比如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...

  5. android对话框(Dialog)的使用方法

    Activities提供了一种方便管理的创建.保存.回复的对话框机制.比如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...

  6. Android对话框(Dialog)

    Android对话框 前几天出差没有进行更新,今天写一下安卓中用的比较多的对话框——AlertDialog. dialog就是一个在屏幕上弹出一个可以让用户做出一个选择,或者输入额外的信息的对话框,一 ...

  7. Android对话框Dialog深度剖析

    对话框 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 对话框设计 Dialog 类是对话框的基类,但您应该避免直接实例化 Di ...

  8. Android自定义对话框(Dialog)位置,大小

    代码: package angel.devil; import android.app.Activity;import android.app.Dialog;import android.os.Bun ...

  9. Android 自定义对话框(Dialog)位置,大小

    代码: package angel.devil; import android.app.Activity; import android.app.Dialog; import android.os.B ...

随机推荐

  1. h5博彩webapp项目实例|h5棋牌游戏|h5博彩app案例

    html5实现的博彩webapp.h5棋牌app实例,运用h5+css3+zepto+jQ+swiper+layer等技术进行布控开发,750px最大宽度适配手机端设备,采用flex+rem布局样式. ...

  2. 【STM32H7教程】第14章 STM32H7的电源,复位和时钟系统

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第14章       STM32H7的电源,复位和时钟系 ...

  3. 详解XMLHttpRequest的跨域资源共享

    0x00 背景 在Browser Security-同源策略.伪URL的域这篇文章中提到了浏览器的同源策略,其中提到了XMLHttpRequest严格遵守同源策略,非同源不可请求.但是,在实践当中,经 ...

  4. Android_问卷调查

    这个是一个简单的问卷调查,对于我这样的初学者可能会绞尽脑汁想尽办法,去实现一个看起来特别简单的功能,我这个是用Intent传参的办法,来实现将前边的调查来进行统计,并记录,之后将这些信息显示到最后一个 ...

  5. 《LeetBook》leetcode题解(15):3Sum[M]

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  6. 使用exe4j将java项目打成exe执行程序

    最近用Java写了一个小工具,想将它达成exe执行文件,到时候直接放某个目录下,一执行就能跑啦. 用到的工具: 1.写好的项目:可以是java项目,也可以是java web项目 2.能够打jar的工具 ...

  7. Java SPI机制和使用示例

    JAVA SPI 简介 SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface.根据 Java 的 SPI 规范,我们可以定义一个服务接口,具体的实 ...

  8. Linux运维中遇到的常见问题

    1.CentOS启动tomcat出现乱码的解决方案1.打开tomcat下的server.xml配置文件,在connect标签中添加编码属性:URIEncoding="UTF-8"2 ...

  9. Java 集合框架:HashMap

    原文出处:Java8 系列之重新认识 HashMap 摘要 HashMap 是 Java 程序员使用频率最高的用于映射 (键值对) 处理的数据类型.随着 JDK(Java Developmet Kit ...

  10. Nodejs学习笔记(十七)—浮点运算decimal.js

    前言 开发过程中免不了有浮点运算,JavaScript浮点运算的精度问题会带来一些困扰 JavaScript 只有一种数字类型 ( Number ) JavaScript采用 IEEE 754 标准双 ...