【问题标题】:Android DatePicker doesn't recognize when the year has been changed via typingAndroid DatePicker 无法识别何时通过键入更改了年份
【发布时间】:2011-03-04 20:12:54
【问题描述】:

我有一个 DatePicker,除了用户在字段中键入而不是使用 +/- 按钮时,它几乎可以正常工作。那时,即使它显示了输入的值,它的 getter 也会返回用户输入之前的任何日期的信息。只要用户点击 + 或 - 就会更新。

我看到一个接受值的更新方法,这不是我想要的。当用户单击“继续”按钮(与 DatePicker 无关)时,我想激发它重新检查其值。我可以在失去焦点时附加一个监听器,但我看不到我可以调用什么来让它重新检查它的内容。

欢迎所有想法。

编辑 一旦用户将焦点从整个对象或什至在三个字段之间移动,DatePicker 肯定会立即更新其值。我想,问题是当屏幕上没有其他东西可以聚焦时,如何迫使焦点远离它。我正在尝试集中我的继续按钮,但由于某种原因它拒绝集中注意力。如果有人知道,也很想知道更多。

【问题讨论】:

    标签: android datepicker


    【解决方案1】:

    只需要清除 DatePicker 上的焦点。不需要隐藏字段。

    final DatePicker dp = (DatePicker)v.findViewById(R.id.dpDate);
    
    dlg.setPositiveButton("Done", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int id) {
          dp.clearFocus();
          String val = "";
          int m = dp.getMonth() + 1;
          val = m + "/" + dp.getDayOfMonth() + "/" + dp.getYear();
          mA.setmDOB(val);
          etAge.setText(AppHelper.calcAge(val, "y", false) + "  (" + val + ")");
     }
     });
    

    【讨论】:

      【解决方案2】:

      尝试再次将 DatePicker (requestFocus()) 聚焦在继续按钮的 onPress 方法上。

      【讨论】:

      • 问题在于它从一开始就永远不会失去焦点。我怀疑如果用户有其他东西可以移动,在他们点击按钮之前,选择器可能会意识到它已经被改变了。我很乐意附加一个 onKey 侦听器,但问题是我在对象的库中看不到任何东西来促使它更新它所看到的日期。
      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 2011-11-23
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多