我编写了一个自定义PreferenceDialog,其中包括两个TimePickers,一个EditText,一些CheckBox和一个scrollview父级。
一切正常,但当屏幕方向改变时,时间选择器重置为0,而其他控件保持其状态。即使在方向更改后,getCurrentHour和getCurrentMinute返回的值也是预期值。
如果您向上和向下滚动,时间选择器最终将重绘并显示正确的数字。此外,如果您手动将24小时格式更改为12小时格式(反之亦然),则时间选择器将显示正确的值。
有没有人知道发生了什么?
答案 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());
}