我在我的活动中使用了DatePicket,
我想限制用户选择的日期为今天的日期。
他们不能选择大于今天日期的日期。
谢谢。
我在我的活动中使用了DatePicket,
我想限制用户选择的日期为今天的日期。
他们不能选择大于今天日期的日期。
谢谢。
您可以轻松地完成这项任务,以下是示例验证代码:
if(dateObj1.before(dateObj2) || dateObj1.equals(dateObj2)){
//the program runs normally
}
else{
new AlertDialog.Builder(PM_Edit.this)
.setTitle("Wrong Data Input!")
.setMessage("The end Date must be Before the start Date, please insert new Date values")
.setNeutralButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
}
}).show();
}
DatePicker datePicker = (DatePicker)findViewById(R.id.new_date_picker);
datePicker.init(year, month, day, new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
if(isDateAfter(view)){
Calendar mCalendar = Calendar.getInstance();
view.init(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH), this);
}
}
private boolean isDateAfter(DatePicker tempView) {
Calendar mCalendar = Calendar.getInstance();
Calendar tempCalendar = Calendar.getInstance();
tempCalendar.set(tempView.getYear(), tempView.getMonth(), tempView.getDayOfMonth(), 0, 0, 0);
if(tempCalendar.after(mCalendar))
return true;
else
return false;
}
});
我没有使用过DatePicker,但文档中并没有显示任何可以限制Picker显示的最大日期的方法,不过您总是可以检查它返回的日期,并通知用户验证标准。
我同意Sheikh的观点。
也许可以考虑对输入的日期进行验证,如果无效,则通知用户并再次启动DatePicker。
除此之外,也许可以使用自定义小部件,但我还没有看到默认的方法来实现这一点。