Android:DatePicker设置的值甚至我在DatePicker之外触摸

时间:2014-12-12 16:48:13

标签: android datepicker

我有一个TextView,当我触摸TextView时,它会调用Date和TimePicker。首先我显示DatePicker,一旦我选择了日期,我就可以设置该值。我设置值后,我从TimePicker获取时间。就像DatePicker一样,我可以在选择时间之后完成。

但即使我在对话框外触摸,值也会自动设置。

例如,在我触摸TextView之后,它调用DatePicker。即使我没有设置值

这是我的代码。

dataandtime.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            TimePickerDialog tpd = new TimePickerDialog(context, mTimeSetListener, mhour, mminute, false);
            tpd.show();
            DatePickerDialog dpd = new DatePickerDialog(context,
                    mDateSetListener, myear, mmonth, mday);
            dpd.show();

        }
    });

    private DatePickerDialog.OnDateSetListener mDateSetListener = new 
        DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                myear=year;
                mmonth=monthOfYear+1;
                mday=dayOfMonth;
                if(mmonth<10)
                {
                    month = 0 + Integer.toString(mmonth);
                }
                else
                {
                    month = Integer.toString(mmonth);
                }
                if(mday<10)
                {
                    day = 0 + Integer.toString(mday);
                }
                else
                {
                    day = Integer.toString(mday);
                }
                nextdate = (new StringBuilder().append(myear).append("-").append(month).append("-").append(day).append(" ")).toString();                    
            }
        };

        private OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                // TODO Auto-generated method stub
                mhour = hourOfDay;
                mminute = minute;
                if(mhour<10)
                {
                    hour = 0 + Integer.toString(mhour);
                }
                else
                {
                    hour = Integer.toString(mhour);
                }
                if(mminute<10)
                {
                    tminute = 0 + Integer.toString(mminute);
                }
                else
                {
                    tminute = Integer.toString(mminute);
                }
                if(msecond<10)
                {
                    second = 0 + Integer.toString(msecond);
                }
                else
                {
                    second = Integer.toString(msecond);
                }
                nexttime = (new StringBuilder().append(hour).append(":").append(tminute).append(":").append(second)).toString();
                dateandtime = nextdate+nexttime;
                dataandtime.setText(dateandtime);
            }
        };

1 个答案:

答案 0 :(得分:0)

DatePickerDialog dpd = new DatePickerDialog(context,
                mDateSetListener, myear, mmonth, mday);
dpd.setCanceledOnTouchOutside(true);

文档here