0

我编写了一个自定义的 PreferenceDialog,其中包括两个 TimePicker、一个 EditText、一些 CheckBox 和一个滚动视图父级。

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

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

有人知道发生了什么吗?

4

1 回答 1

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());
}
于 2011-10-29T23:07:37.523 回答