本文转载自:[http://blog.csdn.net/andie_guo/article/details/14145135](http://blog.csdn.net/andie_guo/article/details/14145135)
  在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择。关于Android Dialog的使用方法,已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例),但是只是给出了创建各种类型对话框的方法,并未给出如何获取用户在对话框中做出选择后的数据,即如何监听用户做出的选择。
接下来笔者将根据JavaDoc API文档引导读者详细的了解提示对话框、文本框对话框、简单列表对话框、单选项列表对话框、多选项列表对话框、自定义对话框6种类型对话框监听事件的具体处理过程。

1、创建提示对话框。
笔者为该对话框添加了3个按钮,分别是 PositiveButton (确定)、NeutralButton、 NegativeButton(取消),中文意思是积极的按钮(确定)、中立的按钮、消极的按钮(取消),按字面意思翻译,有点怪,但是很形象。
 
JavaDoc API文档



创建提示对话框并实现监听事件的代码如下:

new AlertDialog.Builder(DialogActivity.this).setIcon(android.R.drawable.btn_star)      .setTitle("调查").setMessage("你喜欢海贼王吗?")      .setPositiveButton("喜欢",new DialogInterface.OnClickListener() {                  @Override                  public void onClick(DialogInterface dialog,int which) {                      // TODO Auto-generated method stub                     Toast.makeText(DialogActivity.this,"我很喜欢海贼王", Toast.LENGTH_SHORT).show();                  }              })      .setNeutralButton("一般",new DialogInterface.OnClickListener() {                  @Override                  public void onClick(DialogInterface dialog,int which) {                      // TODO Auto-generated method stub                     Toast.makeText(DialogActivity.this,"我对海贼王不怎么感兴趣", Toast.LENGTH_SHORT).show();                  }              })      .setNegativeButton("不喜欢",new DialogInterface.OnClickListener() {                  @Override                  public void onClick(DialogInterface dialog,int which) {                      // TODO Auto-generated method stub                     Toast.makeText(DialogActivity.this,"我一点也不喜欢海贼王", Toast.LENGTH_SHORT).show();                  }              }).show();// show很关键

2、创建文本框对话框。

笔者为该对话框添加了1个文本、一个PositiveButton (确定)、一个NegativeButton(取消),并实现了PositiveButton点击监听事件,点击后获取文本框里的内容,并以toast形式显示出来。
 
创建文本框对话框并实现监听事件的代码如下:

final EditText editText = new EditText(DialogActivity.this);  new AlertDialog.Builder(DialogActivity.this).setTitle("请输入").setView(editText).setPositiveButton("确定",   new DialogInterface.OnClickListener() {                    @Override      public void onClick(DialogInterface dialog, int which) {          // TODO Auto-generated method stub         Toast.makeText(DialogActivity.this, "您输入的内容是:"+editText.getText(), Toast.LENGTH_SHORT).show();      }  }).setNegativeButton("取消", null).show();

3、创建简单列表对话框。
笔者为该对话框添加了一个数组显示列表,并实现了点击列表item选项监听事件,点击item选项后获取item内容,并以toast形式显示出来。
 
JavaDoc API文档
查阅JavaDoc API文档,读者可根据JavaDoc API文档来了解如何实现单击item选项监听事件,如下列出的setItems()方法第2个参数易知只要为第2个参数提供OnClickListener实例即可实现监听事件,读者可通过这种方式触类旁通以下几种对话框监听事件的实现,学会通过查阅JavaDoc API文档来解决问题是一项开发必备的编程能力

创建简单列表对话框并实现监听事件的代码如下:

final String[] items = new String[]{"北京","上海","深圳"};  new AlertDialog.Builder(DialogActivity.this).setTitle("城市列表").setItems(items, new DialogInterface.OnClickListener() {      @Override      public void onClick(DialogInterface dialog, int which) {          // TODO Auto-generated method stub         switch (which) {          case 0:              Toast.makeText(DialogActivity.this, "您选中了:"+items[0], Toast.LENGTH_SHORT).show();              break;          case 1:              Toast.makeText(DialogActivity.this, "您选中了:"+items[1], Toast.LENGTH_SHORT).show();              break;          case 2:              Toast.makeText(DialogActivity.this, "您选中了:"+items[2], Toast.LENGTH_SHORT).show();              break;          }      }  }).show();

4、创建单选按钮列表对话框。
笔者为该对话框添加了一个单选按钮数组显示列表,并实现了点击item选项监听事件,点击item选项后获取item内容,并以toast形式显示出来。
 
JavaDoc API文档
笔者是以红框标记的方法实现的,即提供一个数组的方式,读者可尝试下另外的几种方法,比如提供ListAdapter、Cursor的方式来实现。

创建单选项列表对话框并实现监听事件的代码如下:

final String[] items = new String[]{"苹果","香蕉","梨子"};   new AlertDialog.Builder(DialogActivity.this).setTitle("单选框").setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {      @Override      public void onClick(DialogInterface dialog, int which) {          // TODO Auto-generated method stub         switch (which) {          case 0:              Toast.makeText(DialogActivity.this, "您选中了:"+items[0], Toast.LENGTH_SHORT).show();              break;          case 1:              Toast.makeText(DialogActivity.this, "您选中了:"+items[1], Toast.LENGTH_SHORT).show();              break;          case 2:              Toast.makeText(DialogActivity.this, "您选中了:"+items[2], Toast.LENGTH_SHORT).show();              break;          }      }  }).setNegativeButton("取消", null).show();

5、创建复选框列表对话框。

笔者为该对话框添加了一个复选框数组显示列表,并实现了点击复选框选项监听事件,选中复选框选项后,获取所有选中的选项,并以toast形式显示出来。
 
JavaDoc API文档

创建复选框列表对话框并实现监听事件的代码如下:

final String[] items = new String[]{"音乐","电影","书籍"};   final boolean[] selected = new boolean[]{true,false,true};  new AlertDialog.Builder(DialogActivity.this).setTitle("复选框")  .setMultiChoiceItems(items,selected, new DialogInterface.OnMultiChoiceClickListener() {      @Override      public void onClick(DialogInterface dialog, int which, boolean isChecked) {          // TODO Auto-generated method stub         selected[which] = isChecked;      }  })  .setPositiveButton("确定", new DialogInterface.OnClickListener() {      @Override      public void onClick(DialogInterface dialog, int which) {          // TODO Auto-generated method stub         StringBuffer str = new StringBuffer("您选中了:");          for(int i=0;i<3;i++){              if(selected[i]){                  str.append(items[i]+",");              }          }          str.deleteCharAt(str.length()-1);          Toast.makeText(DialogActivity.this, str, Toast.LENGTH_SHORT).show();      }  }).setNegativeButton("取消", null).show();

6、创建自定义列表对话框。

笔者为该对话框添加了自定义的布局文件,该自定义布局文件包含一个文本标签和一个文本框,并实现了确定按钮点击监听事件,在文本框输入内容后,获取文本框里的内容,并以toast形式显示出来。
 
创建自定义列表对话框并实现监听事件的代码如下: 

LayoutInflater layoutInflater = LayoutInflater.from(DialogActivity.this); // 创建视图容器并设置上下文 final View view = layoutInflater.inflate(R.layout.dialog,null); // 获取list_item布局文件的视图 new AlertDialog.Builder(DialogActivity.this).setTitle("自定义布局").setView(view).setPositiveButton("确定", new DialogInterface.OnClickListener() {      @Override      public void onClick(DialogInterface dialog, int which) {          // TODO Auto-generated method stub          EditText editText = (EditText) view.findViewById(R.id.likeText);         Toast.makeText(DialogActivity.this, "您的爱好是:"+editText.getText(), Toast.LENGTH_SHORT).show();     }  }).setNegativeButton("取消", null).show();

7、参考:

7种形式的Android Dialog使用举例
8、项目源码:

csdn code:git@code.csdn.net:a13429921973/dialogdemo.git
csdn 资源:http://download.csdn.net/detail/a13429921973/6502755

更多相关文章

  1. input 按键分发
  2. Android(安卓)RIL源码研究笔记 の ril_event
  3. 【Android】android的基本UI操作(2)以及小结
  4. android 监听手机电量变化
  5. 介绍Android(安卓)Touch事件的传递机制
  6. Android(安卓)studio button 按钮 四种绑定事件的方法【实例代码
  7. android xmpp开发 asmack实现断线自动重连
  8. 详谈Android中onTouch与onClick事件的关系(必看)
  9. Android(安卓)多次点击的另一种思路

随机推荐

  1. Android(安卓)APK 安装过程及原理详解
  2. Android消息推送完美解决方案全析
  3. Android(安卓)SHA1值获取方式(开发模式和
  4. android 内存优化以及性能优化相关问题
  5. Android快速实现二维码扫描--Zbar
  6. CyanogenMod 10 修改 Vold 使 Android 自
  7. CountDownTimer浅析
  8. Android Framework 之HelloWorld(二)
  9. [置顶] 【Android】 基于Socket 的即时通
  10. 修改Android Studio的Android SDK Path