Android创建两个DatePickers(无对话框)以输入“From”和“To”日期

时间:2015-08-17 12:57:36

标签: android datepicker

我的活动中有两个日期选择器:

 DatePicker DatePickerDateStart = (DatePicker) findViewById(R.id.datestart);
 DatePicker DatePickerDateEnd = (DatePicker) findViewById(R.id.dateend);

我为两者使用微调器模式(datePickerMode),并隐藏日历(calendarViewShown)。

第一个datepicker持有“From”日期,第二个“To”日期。我想在第一个datepicker更改值时创建第二个datepicker setMinDate()。到目前为止,我有这个:

    Calendar calendar = Calendar.getInstance();
    DatePickerDateStart.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
        @Override
        public void onDateChanged(DatePicker arg0, int year, int month, int day) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
            try {
                Date mDate = sdf.parse(year + "-" + (month+1) + "-" + day);
                long timeInMilliseconds = mDate.getTime();
                DatePickerDateEnd.setMinDate(timeInMilliseconds);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
    });

我的问题是setMinDate()第一次用户从“From” datepicker中选择日期时有效,但在此之后它没有设置最小日期(即第二次改变)。

我注意到,只有当我从“From” datepicker更改年份时才会再次setMinDate()。然后它再次为“To” datepicker设置一个新的最小日期。因此,如果我先改变年份,然后再改变其余的旋转器(日,月),我就能得到理想的行为。但这是不对的,因为正确的行为是每当任何一个微调器(月,日,年)发生变化时设置一个最小日期。但是,timeInMilliseconds会在每次更改时保留新日期,但setMinDate()不会更新“收件人”日期拣配程序。

对此有何帮助? 我希望我已经说清楚了

0 个答案:

没有答案
相关问题