我的活动中有两个日期选择器:
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()
不会更新“收件人”日期拣配程序。
对此有何帮助? 我希望我已经说清楚了