8

我在我的活动中使用 DatePicket ,

我想将用户选择的日期限制为今天的日期。

他们不应该选择大于今天日期的日期。

谢谢你。

4

4 回答 4

8

是的,你可以很容易地做到这一点,这里的验证就是例子:

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();
            }

归功于: http ://www.brighthub.com/mobile/google-android/articles/41545.aspx

于 2011-03-03T13:29:11.303 回答
5
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;
    }
});
于 2011-11-24T07:42:52.173 回答
3

我没有使用过 DatePicker,但文档没有显示任何可以限制 Picker 显示的最大日期的方法,但您仍然可以随时检查它返回的日期,并可以通知用户有关验证标准的信息。

于 2011-02-09T10:26:09.963 回答
0

我同意谢赫的观点。

也许考虑对输入的日期进行验证,如果无效,通知用户并再次启动 DatePicker。

除此之外,也许是一个自定义小部件,但我还没有看到执行此操作的默认方法。

于 2011-02-09T11:01:03.303 回答