2012-01-10 93 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

相關問題