Android开发之使用AlertDialog创建对话框,单选框和多选框

对话框:

对话框的icon,title,message等都可以不设置。

单选框和多选框与对话框勾选步骤基本上一致。

对话框的构建步骤:

1.使用AlertDialog类的内部类Builder类new 一个builder对象

2.设置图标setIcon() ;                            builder.setIcon();

3.设置title setTitle();                          builder.setTitle();

4.设置Message  setMessage();             builder.setMessage();

5.设置确定按钮  setPositiveButton() ;      builder.setPositiveButton()

6.设置取消按钮   setNegativeButton();    builder.setNegativeButton()

7.设置显示     show();                           builder.show();

代码:

 1     public void click(View v) {
 2         AlertDialog.Builder builder = new AlertDialog.Builder(this);
 3         builder.setIcon(android.R.drawable.alert_dark_frame);
 4         builder.setTitle("鼻血俭朴");
 5         builder.setMessage("尹志平,请考虑好!!!");
 6         builder.setPositiveButton("确定", new OnClickListener() {
 7 
 8             @Override
 9             public void onClick(DialogInterface dialog, int which) {
10                 Toast.makeText(MainActivity.this, "谢谢使用本软件,关闭", 0).show();
11             }
12         });
13 
14         builder.setNegativeButton("取消", new OnClickListener() {
15 
16             @Override
17             public void onClick(DialogInterface dialog, int which) {
18                 Toast.makeText(MainActivity.this, "没有子宫,肯定不成功", 0).show();
19             }
20         });
21 
22         builder.show();
23     }

单选框:

注意:构建过程中,不可以使用setMessage()方法,否则会不显示选项列表。

使用setSingleChoiceItems()方法设置单选

Builder.setSingleChoiceItems(CharSequence[] items, int checkedItem, OnClickListener listener)

参数:

1.items:定义的单选选项数组

2.checkedItem:默认被选中的选项。默认不选中为-1,选中数组第一个为0,选中数组第二个为1,选择数组第三个为2

3.listener:侦听器

1         builder.setSingleChoiceItems(items, -1, new OnClickListener() {
2 
3             @Override
4             public void onClick(DialogInterface dialog, int which) {
5                 Toast.makeText(MainActivity.this, "选择的是:" + items[which], 0)
6                         .show();
7                 dialog.dismiss();
8             }
9         });

侦听器的onClick()方法的两个参数

1.dialog:点击时触发的对话框

2.which:被点击按钮的位置或者项目的位置

 

代码:

 1     public void click1(View v) {
 2         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
 3         builder.setIcon(android.R.drawable.alert_dark_frame);
 4         builder.setTitle("鼻血俭朴");
 5         final String[] items = new String[] { "女", "男" };
 6         builder.setSingleChoiceItems(items, -1, new OnClickListener() {
 7 
 8             @Override
 9             public void onClick(DialogInterface dialog, int which) {
10                 Toast.makeText(MainActivity.this, "选择的是:" + items[which], 0)
11                         .show();
12                 dialog.dismiss();
13             }
14         });
15         builder.show();
16     }

多选框:

注意:构建过程中,不可以使用setMessage()方法,否则会不显示选项列表。

使用setMultiChoiceItems()方法设置多选

Builder.setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener)
参数:
1.items:定义的多选选项的数组
2.checkedItems:boolean[]数据记录多选选项数组中那个被选中,选中了为true,没有选中为false
3.listener:侦听器,多选的侦听器为OnMultiChoiceClickListener
1         builder.setMultiChoiceItems(items, checkedItems,
2                 new OnMultiChoiceClickListener() {
3 
4                     @Override
5                     public void onClick(DialogInterface dialog, int which,
6                             boolean isChecked) {
7                         checkedItems[which] = isChecked;
8                     }
9                 });

侦听器的onClick()方法的两个参数

1.dialog:点击时触发的对话框

2.which:被点击按钮的位置或者项目的位置

3.isChecked:点击某个选项,如果该选项之前没被选择,那么此时isChecked的值为true,不勾选则为false。

代码:

 1     public void click2(View v) {
 2         AlertDialog.Builder builder = new AlertDialog.Builder(this);
 3         builder.setIcon(android.R.drawable.alert_dark_frame);
 4         builder.setTitle("请选择多个选项");
 5         final String[] items = new String[] { "貂蝉", "西施", "主管", "设计", "开发" };
 6         final boolean[] checkedItems = new boolean[] { false, false, false,
 7                 false, false };
 8         builder.setMultiChoiceItems(items, checkedItems,
 9                 new OnMultiChoiceClickListener() {
10 
11                     @Override
12                     public void onClick(DialogInterface dialog, int which,
13                             boolean isChecked) {
14                         checkedItems[which] = isChecked;
15                     }
16                 });
17         builder.setPositiveButton("确定", new OnClickListener() {
18 
19             @Override
20             public void onClick(DialogInterface dialog, int which) {
21 
22                 String text = "";
23                 for (int i = 0; i < items.length; i++) {
24                     if (checkedItems[i]) {
25                         text += items[i];
26                     }
27                 }
28                 Toast.makeText(MainActivity.this, text, 0).show();
29                 dialog.dismiss();
30 
31             }
32         });
33         builder.show();
34     }

AlartDialog按Back键的处理:

可以通过代码设置:默认是true,就是说可以通过按back键取消了。

builder.setCancelable(false);  //默认为true

同时可以设置back键的监听,自定义动作

1 builder.setOnCancelListener(new OnCancelListener() {
2 
3             @Override
4             public void onCancel(DialogInterface dialog) {
5                 //定义的操作
6             }
7         });
原文地址:https://www.cnblogs.com/liyiran/p/5050687.html