Android TimePicker внутри PreferenceDialog сбрасывает отображение часов и минут на 0, хотя значения соответствуют ожидаемым - PullRequest
0 голосов
/ 29 октября 2011

Я написал собственный PreferenceDialog, который включает в себя два TimePickers, EditText, несколько CheckBoxes и родительский элемент scrollview.

Все работает нормально, но когда ориентация экрана меняет таймеры, сбрасывается на 0, в то время как другие элементы управления сохраняют свое состояние. Значения, возвращаемые getCurrentHour и getCurrentMinute, являются ожидаемыми значениями даже после изменения ориентации.

Если вы прокручиваете вверх и вниз, средства выбора времени со временем будут перерисовываться и отображать правильные числа. Кроме того, если вы вручную переключитесь с 24-часового формата на 12-часовой (или наоборот), таймеры отобразят правильное значение.

Кто-нибудь имеет представление о том, что происходит?

1 Ответ

1 голос
/ 30 октября 2011

НАКОНЕЦ понял это. Если вы используете TimePicker в DialogPreference, все, что вам нужно сделать, это переопределить метод 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());
}
...