【问题标题】:Android: Date Picker Should not accept current date and future datesAndroid:日期选择器不应接受当前日期和未来日期
【发布时间】:2011-08-23 07:08:16
【问题描述】:

如何限制日期选择器在我正在使用 google api 的 android 中接受当前和未来的日期...任何想法..?

【问题讨论】:

标签: android datepicker


【解决方案1】:
  1. 从 API 级别 11 开始,就有了一种方法:

    DatePicker.setMaxDate(long maxDate)
    
  2. 如果它必须在以前的版本中工作,请使用此方法:

    public void init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)
    

您可以传递您自己的 OnDateChangedListener,它将无效日期“重置”为最新的有效日期:

DatePicker picker = ...
int year = ...
int monthOfYear = ...
int dayOfMonth = ...
picker.init(year, monthOfYear, dayOfMonth, new DatePicker.OnDateChangedListener() {

    @Override
    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        // check if current date is OK
        boolean dateOk = ...
        if (!dateOk) {
            // correct the date, but be sure the corrected date is OK
            // => otherwise you might get endless recursion
            year = ...
            monthOfYear = ...
            dayOfMonth = ...
            // update the date widget with the corrected date values
            view.updateDate(year, monthOfYear, dayOfMonth);
        }
    }
});

【讨论】:

  • 我有一个类似的问题:我想在过去的日期显示一个对话框。问题是 Dialog 被调用了两次:第一次,当用户输入过去的日期时,第二次,当 view.updateDate 被调用时。我想它会再次触发对听众的呼叫,因为我们正在通过此呼叫“更改”日期。我们怎样才能摆脱这个?我们可以暂时“清除”听众吗?
猜你喜欢
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多