3

我的节目经典android.app.TimePickerDialog又听OnTimeSetListener.onTimeSet()。从 Android 4.3 迁移到 5.1 后,我注意到使用键盘输入分钟并按“确定”会导致传递给onTimeSet()处理程序的值错误。但是,如果我Enter在对话框中按下 OK 按钮之前按下键盘(或单击小时输入或仅使用微调器),则值是正确的。

我认为这与NumberPicker用户按下 OK 时焦点未清除有关。

使用微调器几分钟或额外按下Enter键盘很不方便。如何仅通过 OK 按钮接受我的值?

import android.app.*;
...

private final DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        ...
    }
}

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case TIMEPICKER_DIALOG:
        return new TimePickerDialog(ChannelActivity.this, mTimeSetListener, day.get(Calendar.HOUR_OF_DAY), day.get(Calendar.MINUTE), true);
    }
    return super.onCreateDialog(id);
}
4

1 回答 1

1

5年后我遇到了这个问题。经过数小时的搜索和尝试,似乎调用 timePicker.clearFocus() 将更新 TimePicker 内部使用的 NumberPicker

于 2021-08-30T16:07:50.550 回答