2012-01-10 56 views

回答

3

在这种情况下,你可以扩展DatePickerDialog,使自己实现OnDateChanged,被称为每次这一点,你得到的日期更改为参数的DatePicker,和新的年,月,日的值,所以您可以检查如果该日期已过,并且在这种情况下抛出错误(使用Toast或其他)并调用DatePicker.updateDate()来设置正确的值(以便DatePicker始终处于一致状态)。

此外,你可以打电话DatePicker.init(year, monthOfYear, dayOfMonth, onDateChangedListener);那么你可以传递一个

onDateChangedListener implementation without having to extend DatePickerDialog. 

编辑:(我从来没有尝试,但我认为它可以做你的工作。)

DatePicker“ s

setMinDate(long minDate) 

设置此NumberPicker支持的最短日期,以Januar以来的毫秒数y 1,1970 00:00:00在getDefault()时区中。

实施例:

DatePickerDialog dialog = new DatePickerDialog(this, mDateSetListener, cyear, cmonth, cday);   
dialog.getDatePicker().setMinDate(new Date()); 
+0

谢谢你这个工作对我来说....这导致计算器例外,我处理得..... – praveenb 2013-06-07 05:07:29

2

使用setMinDateCalendarView类的功能。您可以在这里以毫秒为单位设置日期。为了防止未来的日期使用setMaxDate

使用getDatePicker获取日期选择器并设置calendarView,如上所述。

+0

我要限制的日期选取器不允许用户设置如下系统当前日期的日期...怎么样?在代码中? – user774041 2012-01-10 08:59:12

1
private int myear; //Declare these three variables in MainActivity and call showDialog(1) 
    private int mmonth; 
    private int mday; 

    final Calendar myCalendar= Calendar.getInstance(); 

    private void setCurrentDateOnView() { //Call this method before showDialog 

     myear = myCalendar.get(Calendar.YEAR); 
     mmonth = myCalendar.get(Calendar.MONTH); 
     mday = myCalendar.get(Calendar.DAY_OF_MONTH); 
    } 

    protected Dialog onCreateDialog(int id) { 
      switch (id) { 

       case 1: 
        DatePickerDialog startDate = new DatePickerDialog(this, datePickerListener, myear,mmonth, 
          mday){ 
         @Override 
         public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
         { 

         } 
        }; 

        myCalendar.set(myear, mmonth, mday); 
        long startTime = myCalendar.getTimeInMillis(); 
        startDate.getDatePicker().setMinDate(startTime - 1000); 
        return startDate; 
      } 
      return null; 
     } 
+0

thanx bro ..此代码正在为我工​​作.. – 2017-08-02 18:37:03

相关问题