安卓系统,检查来自日期选择器的日期是否在未来



在我的活动中,用户可以通过日期选择器选择日期。我要确保的是,选定的日期不会在未来。

到目前为止:

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的限制?

相关内容

  • 没有找到相关文章

最新更新