【问题标题】:How do you get a DatePicker from a DatePickerDialog?如何从 DatePickerDialog 中获取 DatePicker?
【发布时间】:2012-05-17 11:13:24
【问题描述】:

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

【问题讨论】:

    标签: android datepicker datepickerdialog


    【解决方案1】:

    尽管 getter 方法仅在 Honeycomb 及更高版本中可用(正如 dmon 正确指出的那样),您仍然可以相当容易地访问 DatePickerDialog 使用反射封装的 DatePicker 对象。它看起来像这样:

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

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

    【讨论】:

    • 好答案。不幸的是,日期选择器的获取和设置最大值也是 API 11...
    • 无赖,我还没看过那些。不幸的是,在浏览 2.1-update1 的 DatePicker 的源代码时,完全没有最小/最大日期逻辑。我想你可以创建自己的DatePicker 扩展来处理这个问题,并将其注入DatePickerDialog(或使用自定义对话框),但对于一些非常小的事情来说,这似乎是一项非常艰巨的工作。
    【解决方案2】:

    你看错了,它只在 API 11 之后可用:

    "public DatePicker getDatePicker() 自:API 级别 11"。看closely

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      • 2010-11-02
      • 2023-03-05
      • 1970-01-01
      • 2011-06-22
      • 2014-10-15
      相关资源
      最近更新 更多