2012-05-08 27 views
9

Mam aktywność, która pojawia się w android.app.DatePickerDialog.Jak uzyskać DatePicker z DatePickerDialog?

DatePickerDialog dialog = new DatePickerDialog(this, startDateSetListener, start_cal.get(Calendar.YEAR), start_cal.get(Calendar.MONTH), start_cal.get(Calendar.DATE)); 

chcę dostać na DatePicker Widok z DatePickerDialog tak, że można ustawić minimalną i maksymalną dat. Odwołanie do API mówi, że istnieje metoda getDatePicker, która istnieje od czasu interfejsu API 1, ale jest nieważna, moje idee go nie lubią.

DatePicker picker = dialog.getDatePicker(); 

„Metoda getDatePicker() jest zdefiniowana dla danego typu DatePickerDialog”

ktoś wie co API został stworzony w sposób lub w jaki sposób mogę dostać się do DatePicker edytować Min/Max daty?

Używam API 7, Platforma 2.1.

Odpowiedz

23

Pomimo tej metody getter tylko jest dostępny w Honeycomb i powyżej (jak słusznie zauważył DMON), nadal można dość łatwo uzyskać dostęp do obiektu DatePicker kapsułkach przez DatePickerDialog użyciu odbicia. Będzie to wyglądać mniej więcej tak:

DatePickerDialog dialog = ... // create dialog 
Field mDatePickerField = dialog.getClass().getDeclaredField("mDatePicker"); 
mDatePickerField.setAccessible(true); 
DatePicker mDatePickerInstance = (DatePicker) mDatePickerField.get(dialog); 

Od tego momentu masz odniesienie do wewnętrznego DatePicker obiektu i powinien być w stanie zmienić go do własnych upodobań. Proszę uważać na wszelkie oczywiste literówki, ponieważ wpisałem to bezpośrednio w przeglądarce.

+3

Dobra odpowiedź. Niestety get i set max na selektorze daty to API 11 ... – stacybro

+0

Bummer, jeszcze na nie nie patrzyłem. Niestety, podczas przeglądania źródła 'DatePicker' dla 2.1-update1, logika daty min/max jest całkowicie nieobecna. Przypuszczam, że mógłbyś stworzyć własne rozszerzenie 'DatePicker', aby sobie z tym poradzić, i wstawić je do' DatePickerDialog' (lub użyć niestandardowego okna dialogowego), ale wygląda na to, że praca jest naprawdę niemała. –

3

Ty misread, jest ona dostępna tylko od 11 API:

"publiczne DatePicker getDatePicker() Od: API Level 11". Spójrz na closely.

+0

Ah crud. Dzięki! – stacybro

Powiązane problemy