2012-05-08 18 views
9

Android.app.DatePickerDialog adlı bir etkinliğim var.Bir DatePicker'ı bir DatePickerDialog'dan nasıl alırsınız?

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

ben min ve max tarihleri ​​ayarlayabilirsiniz böylece DatePickerDialog dan DatePicker View almak istiyorum. API başvurusu, getDatePicker yönteminin var olduğunu ve API 1'den beri var olduğunu, ancak geçersiz olduğunu, ide'm sevmediğini söylüyor.

DatePicker picker = dialog.getDatePicker(); 

yöntem ne API oluşturuldu biliyor veya nasıl min/max tarihleri ​​düzenlemek için DatePicker alabilirsiniz herhangi biri "yöntemi getDatePicker() tipi DatePickerDialog için tanımlanmamış"?

Ben API 7, Platform 2.1 kullanıyorum.

cevap

23

Bu yöntem yalnızca Honeycomb'da ve yukarısında (dmon doğru bir şekilde işaret edildiğinde) mevcut olmasına rağmen, yansıma kullanarak DatePickerDialog tarafından kapsüllenen DatePicker nesnesine oldukça kolay bir şekilde erişebilirsiniz. , Dahili DatePicker nesnesine bir başvuru var Bu noktadan itibaren

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

ve kendi zevkine göre değiştirmek gerekir: Böyle bir şey bakacağız. Lütfen doğrudan tarayıcıya girdiğimde, herhangi bir bariz yazımdan kaçının.

+3

İyi cevap. Ne yazık ki, tarih seçicideki get ve set max, API 11 de ... – stacybro

+0

Bummer, Henüz bakmadım. Ne yazık ki, 2.1-update1 için 'DatePicker' kaynağına göz atarken min/max tarih mantığı tamamen yok. Bunu başa 'DatePicker' kendi uzantısı oluşturmak ve' DatePickerDialog' enjekte (veya özel bir iletişim kutusunu kullanın) herhalde, ama oldukça küçük bir şey için işin bir çok şey gibi görünüyor. –

3

Bunu API 11 dan itibaren var olduğunu, yanlış okumuş:

"kamu DatePicker getDatePicker() beri: API Seviye 11". Bakın closely.

+0

Ah crud. Teşekkürler! – stacybro