在我的活动中,用户可以通过日期选择器选择日期。我要确保的是,选定的日期不会在未来。
到目前为止:
private String textStart="";
private String textEnd="";
private String setToday="";
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
setToday = day+"/"+(month+1)+"/"+year;
当我从日期选择器中选择日期时
private DatePickerDialog.OnDateSetListener myDateListener
= new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
// arg1 = year
// arg2 = month
// arg3 = day
showDateStart(arg1, arg2 + 1, arg3);
}
调用方法showDateStart检查日期的范围
private void showDateStart(int year, int month, int day) {
textDateStart.setText(new StringBuilder().append(day).append("/")
.append(month).append("/").append(year));
startStamp=true;
textStart = day+"/"+month+"/"+year;
if(textStart.compareTo(setToday)>0){
textStart = setToday;
Toast.makeText(getActivity(), "out of scope::"+setToday,
Toast.LENGTH_LONG).show();
textDateStart.setText(setToday);
}
}
但如果我选择2016年1月1日,则不起作用,因为今天是2015年2月22日的textStart值不超过今天的设置
很抱歉我犯了第一个问题。
作为奖励:是否可以限制日期选择器仅显示截止到今天的日期?
您可以从DatePickerDialog(只需调用getDatePicker())获取底层DatePicker,并使用设置其边界
- setMinDate(long-minDate)
- setMaxDate(long maxDate)
其中,参数是自1970年1月1日00:00:00以来默认时区中的通常毫秒数。当然,您仍然需要计算这些值,但这对于Calendar类来说应该是微不足道的:只需取当前日期并加减x年。
更细心的读者会注意到,上述设置直到API 11级才可用。如果你只针对那个(或更新的)平台,那么你就可以去了。如果你还想支持姜饼设备(Android 2.3/API 9级+),你可以使用后端口版本的DatePicker代替。
从这里开始:在Android中设置DatePickerDialog的限制?