2011-08-23 6 views

답변

3
  1. 는 방법이있다 :

    DatePicker.setMaxDate(long maxDate) 
    
  2. 은 이전 버전에서 작동이 방법을 사용하는 경우 :

    public void init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener) 
    

당신을 유효하지 않은 날짜를 최신 유효한 날짜로 "재설정"하는 자신의 OnDateChangedListener를 전달할 수 있습니다 :

DatePicker picker = ... 
int year = ... 
int monthOfYear = ... 
int dayOfMonth = ... 
picker.init(year, monthOfYear, dayOfMonth, new DatePicker.OnDateChangedListener() { 

    @Override 
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
     // check if current date is OK 
     boolean dateOk = ... 
     if (!dateOk) { 
      // correct the date, but be sure the corrected date is OK 
      // => otherwise you might get endless recursion 
      year = ... 
      monthOfYear = ... 
      dayOfMonth = ... 
      // update the date widget with the corrected date values 
      view.updateDate(year, monthOfYear, dayOfMonth); 
     } 
    } 
}); 
+0

비슷한 문제가 있습니다. 날짜가 과거 일 때 대화 상자를 표시하고 싶습니다. 문제는 Dialog가 두 번 호출된다는 것입니다. 첫째, 사용자가 이전 날짜를 입력하면 view.updateDate가 호출됩니다. 나는이 호출로 날짜를 "변경"하고 있기 때문에 리스너에 대한 호출을 한 번 더 트리거합니다. 이걸 어떻게 없앨 수 있니? 청취자를 일시적으로 "삭제"할 수 있습니까? – kaffein

관련 문제