После нескольких попыток и нескольких поисков в Google, наконец, нашел решение выше:
datePicker.init(currentCalendar.get(Calendar.YEAR),
currentCalendar.get(Calendar.MONTH),
currentCalendar.get(Calendar.DAY_OF_MONTH),
new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int selYear, int selMonth,
int selDay) {
String dateSelectionType =
getDateSelectionType(minDate.getTimeInMillis(),
maxDate.getTimeInMillis(), selYear, selMonth, selDay);
if (dateSelectionType.equals("IS_BETWEEN_RANGE")) {
return;
}
if (dateSelectionType.equals("IS_LESS_THAN_MIN")) {
datePicker.updateDate(minDate.get(Calendar.YEAR), minDate.get(Calendar.MONTH),
minDate.get(Calendar.DAY_OF_MONTH));
return;
}
if (dateSelectionType.equals("IS_MORE_THAN_MAX")) {
datePicker.updateDate(maxDate.get(Calendar.YEAR),
maxDate.get(Calendar.MONTH), maxDate.get(Calendar.DAY_OF_MONTH));
return;
}
}
});
добавьте другой метод, чтобы узнать, будет ли выбранная дата после максимальной или до минимальной даты ::
public static String getDateSelectionType(long minDate, long maxDate,
int selectedYear, int selectedMonth, int selectedDayOfMonth) {
Calendar minDateCalendar = Calendar.getInstance();
minDateCalendar.setTimeInMillis(minDate);
minDateCalendar.set(Calendar.HOUR_OF_DAY, 0);
minDateCalendar.set(Calendar.MINUTE, 0);
minDateCalendar.set(Calendar.SECOND, 0);
minDateCalendar.set(Calendar.MILLISECOND, 0);
Calendar maxDateCalendar = Calendar.getInstance();
maxDateCalendar.setTimeInMillis(maxDate);
maxDateCalendar.set(Calendar.HOUR_OF_DAY, 0);
maxDateCalendar.set(Calendar.MINUTE, 0);
maxDateCalendar.set(Calendar.SECOND, 0);
maxDateCalendar.set(Calendar.MILLISECOND, 0);
Calendar selectedDateCalendar = Calendar.getInstance();
selectedDateCalendar.set(Calendar.YEAR, selectedYear);
selectedDateCalendar.set(Calendar.MONTH, selectedMonth);
selectedDateCalendar.set(Calendar.DAY_OF_MONTH, selectedDayOfMonth);
selectedDateCalendar.set(Calendar.HOUR_OF_DAY, 0);
selectedDateCalendar.set(Calendar.MINUTE, 0);
selectedDateCalendar.set(Calendar.SECOND, 0);
selectedDateCalendar.set(Calendar.MILLISECOND, 0);
if (selectedDateCalendar.getTime().before(minDateCalendar.getTime()))
return "IS_LESS_THAN_MIN";
if (selectedDateCalendar.getTime().after(maxDateCalendar.getTime()))
return "IS_MORE_THAN_MAX";
return "IS_BETWEEN_RANGE";
}
PS: Добавление решения моего собственного вопроса - просто выход, если кто-то сталкивается с той же проблемой.