我有一个包含 2 个 DatePickers(From 和 To)和一个名为“Special request”的按钮的活动。我在活动中做的第一件事是设置两个 DatePickers 的 minDate 和 maxDate。然后通过单击按钮,我希望将这些 minDate 和 maxDate 更新为今天的日期 + 一天。
这是我首先调用的 setDate() 方法:
public void setDate() {
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
beginDate.init(year, month, day, null);
endDate.init(year, month, day, null);
long minTime = System.currentTimeMillis() - 1000; // -1 second
beginDate.setMinDate(minTime + 1209600000L); // +14 days
beginDate.setMaxDate(minTime + 31556952000L); // +1 year
endDate.setMinDate(minTime + 1209600000L);
endDate.setMaxDate(minTime + 31556952000L);
}
和 setSpecialDate() 非常相似:
public void setSpecialDate() {
long minTime = System.currentTimeMillis() - 1000; // -1 second
beginDate.setMinDate(minTime + 86400000L); // +1 day
beginDate.setMaxDate(minTime + 31556952000L); // +1 year
endDate.setMinDate(minTime + 86400000L);
endDate.setMaxDate(minTime + 31556952000L);
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
beginDate.updateDate(year, month, day);
endDate.updateDate(year, month, day);
}
和我的监听器,它在 setDate() 之后调用(之前调用它不会改变任何东西):
public void addRequestListener() {
specialRequest = (Button) findViewById(R.id.specialRequest);
specialRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setSpecialDate();
}
});
}
问题是 setSpecialDate() 中的 setMinDate() 和 setMaxDate() 都不起作用,因为 DatePickers 不会显示低于最初设置的日期...