0

2 つの TimePicker、EditText、いくつかの CheckBox、およびスクロールビューの親を含むカスタム PreferenceDialog を作成しました。

すべて正常に動作しますが、画面の向きが変わるとタイムピッカーが 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 に答える