在DatePicker的4.3是在取消按钮点击后,即使设定日期 [英] DatePicker in 4.3 is setting the date even when clicked on cancel button

查看:131
本文介绍了在DatePicker的4.3是在取消按钮点击后,即使设定日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个datepicker。在日期选择器是除了搭载Android 4.3上的所有设备工作正常。当我点击取消日期选择器的按钮设定日期,而不是​​cacelling本身。这里是我的code。

  DatePickerDialog日期选择器=新DatePickerDialog(C,
                新OnDateSetListener(){
                    @覆盖
                    公共无效onDateSet(android.widget.DatePicker来看,
                            年整型,诠释monthOfYear,诠释请将dayOfMonth){
                        // TODO自动生成方法存根
                        日历newDate = Calendar.getInstance();
                        newDate.set(年,monthOfYear,请将dayOfMonth);
                        tv.setText(CommonDateFunction.format(newDate.getTime(),
                                CommonDateFunction.FORMAT_DD_MMM_YYYY));
                    }
            },newCalendar.get(Calendar.YEAR)
            newCalendar.get(的Calendar.MONTH)
            newCalendar.get(Calendar.DAY_OF_MONTH));
    datepicker.show();


解决方案

设置日期选择器的按钮来避免这种错误。下面是一个例子。

 日历newCalendar = Calendar.getInstance();
        最后DatePickerDialog日期选择器=新DatePickerDialog(C,空,newCalendar.get(Calendar.YEAR)
                newCalendar.get(的Calendar.MONTH)
                newCalendar.get(Calendar.DAY_OF_MONTH));
        datepicker.setCancelable(真);
        datepicker.setCanceledOnTouchOutside(真);
        datepicker.setButton(DialogInterface.BUTTON_POSITIVE,OK,
                新DialogInterface.OnClickListener(){
                    @覆盖
                    公共无效的onClick(DialogInterface对话,诠释它){
                        日历newDate = Calendar.getInstance();
                         INT请将dayOfMonth = datepicker.getDatePicker()getDayOfMonth()。
                         INT monthOfYear = datepicker.getDatePicker()的getMonth()。
                         年整型= datepicker.getDatePicker()得到年()。                        newDate.set(年,monthOfYear,请将dayOfMonth);
                        tv.setText(CommonDateFunction.format(newDate.getTime(),
                                CommonDateFunction.FORMAT_DD_MMM_YYYY));
                    }
                });
        datepicker.setButton(DialogInterface.BUTTON_NEGATIVE,取消,
                新DialogInterface.OnClickListener(){
                    @覆盖
                    公共无效的onClick(DialogInterface对话,诠释它){
                        dialog.cancel();
                       // Log.d(选择器,取消!);
                    }
                });
        datepicker.show();

I have a datepicker. The datepicker is working fine on all devices except android 4.3. When i click on cancel button of datepicker is setting the date instead of cacelling itself. Here is my code.

DatePickerDialog datepicker = new DatePickerDialog(c,
                new OnDateSetListener() {
                    @Override
                    public void onDateSet(android.widget.DatePicker view,
                            int year, int monthOfYear, int dayOfMonth) {
                        // TODO Auto-generated method stub
                        Calendar newDate = Calendar.getInstance();
                        newDate.set(year, monthOfYear, dayOfMonth);
                        tv.setText(CommonDateFunction.format(newDate.getTime(),
                                CommonDateFunction.FORMAT_DD_MMM_YYYY));
                    }
            }, newCalendar.get(Calendar.YEAR),
            newCalendar.get(Calendar.MONTH),
            newCalendar.get(Calendar.DAY_OF_MONTH));
    datepicker.show();

解决方案

Set the buttons of the datepicker to avoid this bug. Here is an example.

Calendar newCalendar = Calendar.getInstance();
        final DatePickerDialog datepicker = new DatePickerDialog(c,null, newCalendar.get(Calendar.YEAR),
                newCalendar.get(Calendar.MONTH),
                newCalendar.get(Calendar.DAY_OF_MONTH));
        datepicker.setCancelable(true);
        datepicker.setCanceledOnTouchOutside(true);
        datepicker.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Calendar newDate = Calendar.getInstance();
                         int dayOfMonth = datepicker.getDatePicker().getDayOfMonth();
                         int monthOfYear = datepicker.getDatePicker().getMonth() ;
                         int year = datepicker.getDatePicker().getYear();

                        newDate.set(year, monthOfYear, dayOfMonth);
                        tv.setText(CommonDateFunction.format(newDate.getTime(),
                                CommonDateFunction.FORMAT_DD_MMM_YYYY));
                    }
                });
        datepicker.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", 
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                       // Log.d("Picker", "Cancel!");
                    }
                });
        datepicker.show();

这篇关于在DatePicker的4.3是在取消按钮点击后,即使设定日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆