2012-05-08 5 views
9

나는 android.app.DatePickerDialog를 보여주고있다.DatePickerDialog에서 DatePicker를 얻는 방법은 무엇입니까?

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

나는 내가 최소 및 최대 날짜를 설정할 수 있도록 DatePickerDialog에서 DatePicker에서보기에 싶어. API 레퍼런스는 getDatePicker 메소드가 있고 API 1 이후에 거기에 있었지만 그것이 유효하지 않다고 말하면, 내 ide는 그것을 좋아하지 않는다.

DatePicker picker = dialog.getDatePicker(); 

방법은 무엇 API를 생성 모르거나 어떻게 최소/최대 날짜를 편집 할 DatePicker에서 얻을 수있는 모든 일 "방법 getDatePicker은() 유형 DatePickerDialog에 대한 정의되지?"

API 7, 플랫폼 2.1을 사용하고 있습니다.

답변

23

Honeycomb 이상에서만 getter 메서드를 사용할 수 있지만 (dmon은 올바르게 지적되었으므로) DatePickerDialog에 캡슐화 된 DatePicker 개체에 액세스 할 수는 있습니다. 당신이 내부 DatePicker 객체에 대한 참조가이 시점에서

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

당신은 당신의 자신의 취향에 맞게 변경 할 수 있어야한다 : 그것은 다음과 같이 보일 것입니다. 브라우저에 직접 입력 한 것처럼 오타를주의하십시오.

+3

좋은 답변입니다. 불행히도 get and set date picker는 API 11입니다. – stacybro

+0

Bummer, 아직은 보지 못했습니다. 안타깝게도, 2.1-update1에 대한 'DatePicker'의 소스를 탐색하는 동안 최소/최대 날짜 논리는 완전히 부재합니다. 나는 당신이 그것을 다루기 위해'DatePicker'의 확장을 만들고 그것을'DatePickerDialog' (또는 커스텀 대화 상자를 사용)에 삽입 할 수 있다고 생각합니다. 그러나 이것은 아주 사소한 일에 대한 엄청난 노력처럼 보입니다. –

3

당신은 API (11) 이후에만 사용할 수, 오해 :

"공공 DatePicker에서 getDatePicker() 이후 : API 레벨 11". 보기 closely.

+0

아가씨. 감사! – stacybro