Установка минимальной даты Android DatePicker на определенную дату

Я хочу, чтобы пользователь мог выбрать дату начала и дату окончания. Минимальная дата окончания должна совпадать с датой начала. Например, пользователь выбирает 1 августа 2014 года в качестве даты начала. Когда он нажимает на поле даты возвращения, эти значения передаются в date_picker_activity в качестве дополнительных намерений. В date_picker_activity я проверяю эти дополнительные функции, и в настоящее время он просто устанавливает выбранную дату в качестве отображаемой даты:

if(getIntent().getExtras()!=null)
{
    int year = getIntent().getExtras().getInt("SELECTED_YEAR");
    int month = getIntent().getExtras().getInt("SELECTED_MONTH");
    int day = getIntent().getExtras().getInt("SELECTED_DAY");
    date_picker.updateDate(year, month, day);
}

но пользователь по-прежнему может выбирать даты до выбранной даты начала.

Я попытался сделать что-то подобное внутри этого оператора if:

Time time = new Time();
time.set(day, month, year);
date_picker.setMinDate(time.toMillis(true)-1000);

но это не сработало.

Как я могу установить минимальную дату с переданными значениями?


person Igal    schedule 27.07.2014    source источник
comment
внутри onDateSet() проверьте, допустимы ли значения года, месяца и дня.   -  person joao2fast4u    schedule 27.07.2014
comment
onDateSet() — это метод DatePickerDialog, верно? Я не использую его, я использую действие с элементом DatePicker в макете XML.   -  person Igal    schedule 27.07.2014
comment
Хорошо, тогда я отредактирую свой ответ.   -  person joao2fast4u    schedule 27.07.2014
comment
Почему вы говорите, что это не сработало? Ваш код кажется правильным.   -  person joao2fast4u    schedule 27.07.2014
comment
Да, код работает с установкой значения DatePicker в дату начала, но это не мешает пользователю устанавливать дату до нее. Итак, если дата начала, например, 1 августа 2014 года, в настоящее время пользователь может установить дату окончания на 29 июля 2014 года, и я хочу предотвратить это.   -  person Igal    schedule 27.07.2014
comment
Вы уверены, что значения, поступающие от Intent, не пусты?   -  person joao2fast4u    schedule 27.07.2014
comment
Абсолютно уверен! На самом деле он проверяется 2 раза - первый раз я проверяю, установлена ​​​​ли start_date, и только если это так - можно открыть date_picker_activity, а второй раз в самом действии (проверяя, что дополнительные намерения не пусты ).   -  person Igal    schedule 27.07.2014
comment
Давайте продолжим обсуждение в чате.   -  person joao2fast4u    schedule 27.07.2014


Ответы (1)


После обсуждения в чате нам удалось понять, что этот код:

date_picker.setMinDate(System.currentTimeMillis() - 1000);

все равно вызывался внутри оператора if, устанавливая минимальную дату на текущую дату.

Как только Igal переместил этот код в оператор else, все работает нормально.

person joao2fast4u    schedule 27.07.2014
comment
И еще раз большое спасибо за то, что подтолкнули меня в правильном направлении! Ценю вашу помощь! :) - person Igal; 27.07.2014