PreferenceDialog中的Android TimePicker会将小时和分钟显示重置为0,尽管值是预期的

时间:2011-10-29 09:50:03

标签: android screen-orientation preference timepicker

我编写了一个自定义PreferenceDialog,其中包括两个TimePickers,一个EditText,一些CheckBox和一个scrollview父级。

一切正常,但当屏幕方向改变时,时间选择器重置为0,而其他控件保持其状态。即使在方向更改后,getCurrentHour和getCurrentMinute返回的值也是预期值。

如果您向上和向下滚动,时间选择器最终将重绘并显示正确的数字。此外,如果您手动将24小时格式更改为12小时格式(反之亦然),则时间选择器将显示正确的值。

有没有人知道发生了什么?

1 个答案:

答案 0 :(得分:1)

最终想通了。如果您在DialogPreference中使用TimePicker,您只需覆盖showDialog方法并在那里设置currentHour和currentMinute。

像这样:

@Override
protected void showDialog(Bundle state) {
    super.showDialog(state);

    mBeginShiftTp.setCurrentHour(mBeginShiftTp.getCurrentHour());
    mBeginShiftTp.setCurrentMinute(mBeginShiftTp.getCurrentMinute());
    mEndShiftTp.setCurrentHour(mEndShiftTp.getCurrentHour());
    mEndShiftTp.setCurrentMinute(mEndShiftTp.getCurrentMinute());
}