zoukankan      html  css  js  c++  java
  • 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         });
  • 相关阅读:
    windows下查看端口进程占用情况
    分布式文件管理系统MooseFS在centOS 7中的安装
    开发中的技术选型调研总结
    windows和linux无法访问VMware中linux的tomcat主页问题
    如何使windows系统ping通VMware下面的linux系统
    VMware中linux安装jdk
    mysql数据库之存储过程入门
    Hibernate批处理操作优化 (批量插入、更新与删除)
    JDBC: 批量处理提高SQL处理速度
    小程序 长按复制文本
  • 原文地址:https://www.cnblogs.com/liyiran/p/5050687.html
Copyright © 2011-2022 走看看