2012-02-07 6 views
6

Jak ograniczyć DatePicker do nie można wybrać datę w przyszłości. Mam DatePicker w działaniu, które jest używane do rejestracji. Co zrobić, aby użytkownik nie mógł wybrać daty urodzin, jeśli użytkownik ma mniej niż 18 lat (na przykład nie może wybrać daty po dniu dzisiejszym - 18 lat)?Jak ograniczyć użytkownika DatePicker do może wybrać tylko datę przed today_date - 18 lat

+0

przekonwertować ustawioną datę w milisach i sprawdzić z bieżącą datą w milisach. obliczać przedział między dwoma millis. –

Odpowiedz

2

Nie podano poziomu API. W przypadku Honeycomb i późniejszych, DatePicker ma metody setMin/MaxDate, których można użyć do ograniczenia dopuszczalnego zakresu.

2

Mam nadzieję, że otrzymałeś odpowiedź do tej pory. Poniższe mogą być przydatne również dla innych: Jeśli chcesz wyłączyć użytkownika, aby wybrać datę 18 lat po dzisiejszym, oto, co możesz zrobić.

uzyskać czas od 1 stycznia 1970 do 18 lat od teraz (w milisekundach sekund)

Calendar cal = Calendar.getInstance(); 
    cal.set(cal.get(Calendar.YEAR)+18,cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH), 
      cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), 0); 
    long time = cal.getTimeInMillis(); 

ustawić go jako max dozwolony daty w datepicker

datepicker2.setMaxDate(time); 

Nadzieja pomaga nikomu szukam odpowiedzi

0

Policz rok przed 18 (od bieżącego roku) przez int minYear = currentYear - 18; Następnie ustaw tę datę na (Min. Rok, bieżący miesiąc, bieżący dzień) jako maksymalny limit selektora daty.

private static void setMaxLimitInDatePicker(DatePickerDialog datePickerDialog) { 
    final Calendar calendar = Calendar.getInstance(); 

    int currentYear = calendar.get(Calendar.YEAR); 
    int currentMonth = calendar.get(Calendar.MONTH); 
    int currentDay = calendar.get(Calendar.DAY_OF_MONTH); 

    int minYear = currentYear - 18; 
    int minMonth = currentMonth; 
    int minDay = currentDay; 

    calendar.set(minYear, minMonth, minDay); 
    long minDateInMilliSeconds = calendar.getTimeInMillis(); 

    // Set 18 years from today as max limit of date picker 
    datePickerDialog.getDatePicker().setMaxDate(minDateInMilliSeconds); 
} 
+0

proszę rozważyć wyjaśnienie swojej odpowiedzi. Odradza się tylko odpowiedzi w formie kodu. – ADyson

Powiązane problemy