你如何从DatePickerDialog获得DatePicker?

时间:2012-05-08 22:45:09

标签: android datepicker datepickerdialog

我有一个弹出android.app.DatePickerDialog的活动。

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();

“方法getDatePicker()未定义类型DatePickerDialog”

任何人都知道创建的方法是什么API,或者我如何到达DatePicker来编辑最小/最大日期?

我正在使用API​​ 7,平台2.1。

2 个答案:

答案 0 :(得分:23)

尽管这种getter方法仅在Honeycomb及以上版本中可用(正如dmon正确指出的那样),但您仍然可以使用反射轻松访问由DatePicker封装的DatePickerDialog对象。它看起来像这样:

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

从现在开始,您可以引用内部DatePicker对象,并且您应该可以根据自己的喜好进行更改。请注意任何明显的拼写错误,因为我直接将其输入浏览器。

答案 1 :(得分:3)

你误读了,它只能在API 11之后使用:

“public DatePicker getDatePicker()从:API Level 11”。看 closely