我有两个日期选择器,一个是到达日期,另一个是出发日期。 我想要的是当用户打开出发日期选择器时,它应该在此日期选择器对话框中具有+1天作为最短日期。
这就是我正在做的事情
这是我的抵达日期选择器
final Calendar c = Calendar.getInstance();
arivalYear = c.get(Calendar.YEAR);
arivalMonth = c.get(Calendar.MONTH);
arivalDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
arivalDay = year;
arivalYear = monthOfYear;
arivalMonth = dayOfMonth;
arivalDateTV.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, arivalYear, arivalMonth, arivalDay);
dpd.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
dpd.show();
这是我的出发日期选择器
DatePickerDialog dpd = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
departureYear = year;
departureMonth = monthOfYear;
departureDay = dayOfMonth;
departureDateTV.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, arivalYear, arivalMonth, arivalDay);
Date min = new Date();
min.setDate(arivalDay);
min.setMonth(arivalMonth);
min.setYear(arivalYear);
dpd.getDatePicker().setMinDate(min.getDate());
dpd.show();
但在这里我甚至可以选择抵达日期之前的日期。 我做错了什么。
提前完成。
答案 0 :(得分:1)
您可能会为arivalDay
,arivalMonth
和arivalYear
分配错误的值。
在您的抵达日期选择器中,检查您的onDateSet()
方法。
以下行可能不正确(您将所选年份指定为arivalDay
,将所选月份指定为arivalYear
,将选定日期指定为arivalMonth
)。
arivalDay = year;
arivalYear = monthOfYear;
arivalMonth = dayOfMonth;
应该是:
arivalDay = dayOfMonth;
arivalYear = year;
arivalMonth = monthOfYear;
也弃用setDate(int day)
。
此方法在API级别1中已弃用。使用 Calendar.set(Calendar.DATE,day)改为。
答案 1 :(得分:1)
对于出发最低日期您设置与到达日期相同。 而不是
min.setDate(arivalDay);
试试这个
min.setDate(arivalDay +1);
并将其设置为到达侦听器而不是此
arivalDay = year;
arivalYear = monthOfYear;
arivalMonth = dayOfMonth;
应该是
arivalDay = dayOfMonth;
arivalYear = year;
arivalMonth = monthOfYear;