因为实习项目中涉及到类似于时钟设置闹钟反复时间的原因须要使用对话框的方式呈现。因为DialogFragment眼下还没实验出嵌套Fragment的方法。所以临时先用AlertDialog.Builder中的setMultiChoiceItems取代,因为网上搜索时都仅仅有显示的代码,没有关于点击事件进行操作的演示样例。所以依据项目自己整理了一下

效果图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXJEaW9yZG5h/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

逻辑:用户点击取消则销毁对话框,点击确定会将勾选的星期数存下来。下次再次点击的话之前选中的星期数会自己主动勾选上



        控件.setOnClickListener(//设置控件的点击事件

                new OnClickListener() {

                    @Override

                    public void onClick(View v) {

                        boolean[] isChecked = { false, false, false, false,

                                false, false, false };

                        for (int i = 0; i < DAY_OF_WEEK.length; i++) {

                            if (mSelectedDays.indexOf(DAY_OF_WEEK[i]) != -1) {

                                isChecked[i] = true;  

                            }

                        }//isChecked是一个boolean[],mSelectedDays存放的是用户之前的选择。DAY_OF_WEEK[]则是一个存放星期数的一个常量字符串数组

                        new AlertDialog.Builder(getActivity())

                                .setTitle("选择时间")//标题栏

                                .setMultiChoiceItems(//设置多选条目模式的对话框

                                        new String[] { "星期一", "星期二", "星期三",

                                                "星期四", "星期五", "星期六", "星期日" },//选项条

                                        isChecked,//这个參数必须是boolean[]的,不能使Boolean[]的,有几个item就数组长度几个,true为勾选,false则相反

                                        new DialogInterface.OnMultiChoiceClickListener() {//此处的Listener导包的话须要导入DialogInterface包,假设像我一样因为这个类中须要使用到View中的Listener,则能够按我这样的方式加上前缀

                                            @Override

                                            public void onClick(

                                                    DialogInterface dialog,

                                                    int which, boolean isChecked) {

                                                if (isChecked) {//which代表的是被点击的item的标号。从0開始,假设被选中即isChecked==true

                                                    if (mSelectedDays

                                                            .indexOf(DAY_OF_WEEK[which]) == -1) {

                                                        mSelectedDays

                                                                .append(DAY_OF_WEEK[which]);

                                                    }

                                                } else {

                                                    int index = mSelectedDays

                                                            .indexOf(DAY_OF_WEEK[which]);

                                                    if (index != -1) {

                                                        mSelectedDays

                                                                .deleteCharAt(index);

                                                    }

                                                }

                                            }

                                        })

                                .setPositiveButton("确定",  //positiveButton即确定button,negativeButton为取消button

                                        new DialogInterface.OnClickListener() {//此对确定button的点击事件进行设置于处理

                                            @Override

                                            public void onClick(

                                                    DialogInterface dialog,

                                                    int which) {

                                                TextView repeatValue = (TextView) getActivity()

                                                        .findViewById(

                                                                R.id.repeat_values);

                                                repeatValue.setText(mSelectedDays);

                                            }

                                        })

                                .setNegativeButton("取消",null).show();

                    }

                });

        return repeatFragmentView;

    }

}

尽管是非常基础的知识。可是希望对初学Android的朋友有所帮助~

AlertDialog.Builder中的setMultiChoiceItems中的事件处理的更多相关文章

  1. 关于AlertDialog.Builder(Context context)中所应传入的context

    错误报告: 10-20 14:34:46.565: E/AndroidRuntime(23098): FATAL EXCEPTION: main10-20 14:34:46.565: E/Androi ...

  2. Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder

    Stack Overflow 排错翻译  - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder 转自:ht ...

  3. 如何获取一个AlertDialog中的EditText中输入的内容

    怎么获取一个AlertDialog中的EditText中输入的内容? new AlertDialog.Builder(this)   .setTitle("请输入")   .set ...

  4. Builder模式在Java中的应用

    在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Build ...

  5. Android零基础入门第34节:Android中基于监听的事件处理

    原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...

  6. AlertDialog.Builder对话框类的用法

    1.在测试时,如何实现一个提示 可以使用 Toast.makeText(this, "这是一个提示", Toast.LENGTH_SHORT).show(); //从资源文件str ...

  7. android AlertDialog.Builder

    AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog. 要创建一个AlertDialog,就要用到AlertD ...

  8. 对话框AlertDialog.Builder使用方法

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  9. Android详细的对话框AlertDialog.Builder使用方法

      我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继 ...

随机推荐

  1. Check .NET Version with Inno Setup

    原文 http://www.kynosarges.org/DotNetVersion.html Inno Setup by Jordan Russell is a great installation ...

  2. SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句

    BEGIN        WITH tx AS        (                SELECT a.object_id                      ,b.name AS s ...

  3. 【LeetCode练习题】First Missing Positive

    First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...

  4. linux监控脚本,脚本支持传参,整合C程序

    1,查看指定用户下的进程pid

  5. unity3d导出pdf

    unity生成pdf格式,首先需要导入iTextSharp.dll ,下面是我写的一些方法,可以直接用.直接贴代码, using UnityEngine; using System.Collectio ...

  6. 浅谈C语言中的强符号、弱符号、强引用和弱引用

    摘自http://www.jb51.net/article/56924.htm 浅谈C语言中的强符号.弱符号.强引用和弱引用 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2014- ...

  7. IE 下a标签在 position:absolute 后无法点击的问题

    IE 下 a 标签在 position:absolute 后无法点击的问题 条件 : DOCTYPE 为 XHTML. IE 浏览器 现象 : 将 a 的 position 指定为 absolute, ...

  8. C#中Linq延迟执行问题

    本文来自:http://msdn.microsoft.com/zh-cn/library/bb399393(v=vs.110).aspx http://www.cnblogs.com/zhanglin ...

  9. C++中函数的默认参数

    使用方法: (1)在函数声明或定义时,直接对参数赋值,该参数就是默认参数. (2)在函数调用时,省略部分或全部参数,这时就会使用默认参数进行代替. 注意事项: (1)一般在声明函数是设置默认参数. 如 ...

  10. hadoop结构出现后format变态

    14/07/10 18:50:47 FATAL conf.Configuration: error parsing conf file: com.sun.org                     ...