2015-05-10 53 views
1

我在我的应用程序夫妇的时间使用日期选择器。我希望我的日期选择器在出现某些限制后显示日期。我使用下面的代码: -如何设置日期选择器的最大和最小限制?

@Override 
    protected Dialog onCreateDialog(int id) { 
     switch(id) { 
      case DATE_PICKER_DIALOG: 
       datePickerDialogDateSetListener = new DatePickerDialog.OnDateSetListener() { 
        public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) { 
         year = selectedYear; 
         month = selectedMonth; 
         date = selectedDate; 

         activitySignUpDateEditText.setText(new StringBuilder().append(date)); 
         activitySignUpMonthEditText.setText(new StringBuilder().append(month + 1)); 
         activitySignUpYearEditText.setText(new StringBuilder().append(year)); 
        } 
       }; 

       return new DatePickerDialog(this, datePickerDialogDateSetListener, year, month, date); 

      default: 
       return null; 
     } 
    } 

某处,我想日期选取器从当前日期&某处最小日期为当前日期显示最大之日起18年前。我搜查了很多,但没有找到任何满意的答案。我知道setMaxDate()& setMinDate()日期选择器的方法,但是当我尝试使用它时,我无法在我的编辑文本上设置选定的日期。任何帮助将是可观的。提前致谢。

回答

1

你可以尝试更换这行:

return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay); 

那些:

DatePickerDialog dpDialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay); 
DatePicker datePicker = dpDialog.getDatePicker(); 

Calendar calendar = Calendar.getInstance();//get the current day 
datePicker.setMaxDate(calendar.getTimeInMillis());//set the current day as the max date 
return dpDialog; 

以同样的方式,你设定的最小日期以及

DatePickerDialog dpDialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay); 
DatePicker datePicker = dpDialog.getDatePicker(); 

Calendar calendar = Calendar.getInstance();//get the current day 
datePicker.setMinDate(calendar.getTimeInMillis());//set the current day as the max date 
return dpDialog; 
+0

什么是pyear,pmonth&pday这里 –

+0

我可以设置下限,但无法设置从当前日期起18年的最大限制。 –

1

有关设置最大日期作为18年前,下面的代码片段将完成这项工作:

Calendar c = Calendar.getInstance(); 
int year = c.get(Calendar.YEAR); 
int month = c.get(Calendar.MONTH); 
int day = c.get(Calendar.DAY_OF_MONTH); 
DatePickerDialog dateDialog = new DatePickerDialog(this, datePickerListener, year - 18, month, day); 

//For setting minimum date as Current Date 
//dateDialog.getDatePicker().setMinDate(c.getTimeInMillis()); 

//For setting maximum date as 18 years back 
c.set(year - 18, month, day); 
dateDialog.getDatePicker().setMaxDate(c.getTimeInMillis()); 
return dateDialog; 

由于MaxDate不能小于MinDate,因此,如果MaxDate设置为18年,MinDate不应设置为当前日期。

希望它能为你工作。

相关问题