我在我的应用中使用了datepicker对话框。当用户从Dialog中选择任何日期时,我不想选择通过日期。我的代码在这里。
private DatePickerDialog.OnDateSetListener mdateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int yr, int monthOfYear,
int dayOfMonth) {
year = yr;
month = monthOfYear;
day = dayOfMonth;
updateDate();
}
};
更新日期将所选日期设置为EditText。有没有库方法来阻止选择过去的日期?
提前致谢
答案 0 :(得分:2)
在update方法中,你的条件是.Date类有before,equals和after方法。使用它们。
if(userdate.before(today) || userdate.equals(today)){
//past date found
}
答案 1 :(得分:1)
您可以使用:getDatePicker().setMaxDate()
。覆盖对话框的onCreate()
并在那里应用限制。
答案 2 :(得分:1)
如果使用API 11或更高版本,则可以使用DatePicker.setMinDate()
查看http://developer.android.com/reference/android/widget/DatePicker.html#setMinDate(long)了解详情。
另见setMinDate() for DatePicker doesn't work以了解如何使用它。
答案 3 :(得分:0)
如果您的应用需要在 API LEVEL 8 + 上运行,请使用以下方式执行此操作。将相关代码放在yout onDateSet
方法中。
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
String selected_date = dayOf + "-" + monthOf + "-" + year;
Log.i(TAG, "Selected Date" + selected_date);
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date strDate = null;
try {
strDate = sdf.parse(selected_date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
System.out.println("Current time => " + c.getTime());
Date current_date = null;
String formattedDate = sdf.format(c.getTime());
try {
current_date = sdf.parse(formattedDate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (current_date.after(strDate)) {
Toast.makeText(getApplicationContext(),
"Please choose future date", 1).show();
} else {
mYear = String.valueOf(year);
mMonth = String.valueOf(monthOfYear);
mDay = String.valueOf(dayOfMonth);
updateStartDate();
}
}
如果您的应用需要在 API LEVEL 11 + 上运行,那么使用DatePicker.setMinDate(long)
您可以找到更多信息HERE