9

我有一个弹出 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。

4

2 回答 2

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对象的引用,您应该能够根据自己的喜好对其进行更改。请注意任何明显的拼写错误,因为我是直接在浏览器中输入的。

于 2012-05-08T23:41:40.853 回答
4

您误读了,它仅在 API 11 之后可用:

“公共 DatePicker getDatePicker () 自:API 级别 11”。仔细看。

于 2012-05-08T22:49:24.980 回答