2012-05-08 16 views
9

Ho un'attività che sta spuntando un android.app.DatePickerDialog.Come si ottiene un DatePicker da un DatePickerDialog?

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

voglio arrivare alla DatePicker Vista dal DatePickerDialog modo che io possa impostare il min e max date. Il riferimento API dice che esiste un metodo getDatePicker e che è presente fin dall'API 1, ma non è valido, al mio ide non piace.

DatePicker picker = dialog.getDatePicker(); 

"Il metodo getDatePicker() non è definito per il tipo DatePickerDialog"

Uno sa cosa API è stato il metodo creato o come posso arrivare al DatePicker per modificare min/max date?

Sto usando API 7, piattaforma 2.1.

risposta

23

Nonostante il metodo getter sia disponibile solo in Honeycomb e versioni successive (come indicato correttamente da dmon), è comunque possibile accedere in modo abbastanza semplice all'oggetto DatePicker incapsulato dallo DatePickerDialog utilizzando il riflesso. Sembrerà qualcosa di simile:

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

Da questo punto in poi, si dispone di un riferimento al DatePicker oggetto interno e si dovrebbe essere in grado di modificarlo a proprio piacimento. Si prega di fare attenzione a qualsiasi errore di battitura evidente, poiché l'ho inserito direttamente nel browser.

+3

Buona risposta. Purtroppo il get e set max su data picker sono anche API 11 ... – stacybro

+0

Bummer, non li avevo ancora guardati. Sfortunatamente, mentre sfogliamo l'origine di 'DatePicker' per 2.1-update1, la logica della data minima/massima è completamente assente. Suppongo che tu possa creare la tua estensione di 'DatePicker' per gestirlo, e iniettarlo nel' DatePickerDialog' (o usare una finestra di dialogo personalizzata), ma sembra un sacco di lavoro per qualcosa di piuttosto secondario. –

3

È letto male, è disponibile solo dal 11 API:

"pubblico DatePicker getDatePicker() Dal: Livello API 11". Aspetto closely.

+0

Ah crud. Grazie! – stacybro

Problemi correlati