2015-05-10 5 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 here –

+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, таким образом, MinDate не следует устанавливать в качестве текущей даты, когда MaxDate установлен как 18 лет назад.

Надеюсь, что это сработает для вас.