2

データベースのフィールドに保存された時間を取得する TimePicker であるウィジェットがあります。

ユーザーがウィジェットの時間値を変更すると、これはデータベースに保存されません。

したがって、ウィジェットでプラス記号とマイナス記号のみを使用している場合、魅力的に機能するsetOnTimeChangedListenerメソッドに出くわしました。キーワードを使用している場合、変更はキャプチャされません。

これが私のコードです:

pickedTime.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {

        public void onTimeChanged(TimePicker arg0, int arg1, int arg2) {
            System.out.println("What time is it? "
                    + String.valueOf(arg0.getCurrentHour()) + ":"
                    + String.valueOf(arg0.getCurrentMinute()));
        }

    });

私も失敗しました:

pickedTime.setOnFocusChangeListenerおよびpickedTime.setOnKeyListenerメソッド。

4

3 に答える 3

5

ダイアログを処理して TimePicker を使用すると、うまくいきませんでした。

フォーカスに関連していることをどこかで読んだので、ダイアログを閉じる直前に clearFocus を実行すると機能します。

何かのようなもの:

@Override
protected void onDialogClosed(boolean positiveResult) {
    super.onDialogClosed(positiveResult);

    if (positiveResult) {
        picker.clearFocus();
        lastHour=picker.getCurrentHour();            
        lastMinute=picker.getCurrentMinute();

        String time=String.valueOf(lastHour)+":"+String.valueOf(lastMinute);

        if (callChangeListener(time)) {
            persistString(time);
        }
    }
}
于 2012-06-11T02:53:49.657 に答える
2

mon3t が発見したように、次のように XML ファイルに android:AddStatesFromChildren="true" を設定するオプションがあります。

<DatePicker
    android:id="@+id/datePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:addStatesFromChildren="true" />
<TimePicker
    android:id="@+id/timePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:addStatesFromChildren="true" />

または、コードで設定できます。

    datePicker.setAddStatesFromChildren(true);
    timePicker.setAddStatesFromChildren(true);

デフォルトがそのままであるということのポイントが何であるか、私は本当に理解できません。

于 2011-11-30T08:48:02.280 に答える
1

Sikora の答えは、実際には、この一般的な問題に多くの価値を追加するものです。

変更イベントを管理しておらず、タイム ピッカーの値を別のコード (標準ボタンの onClick ハンドラーなど) から参照する場合、タイム ピッカーの実際の値を取得するには明確なフォーカスが必要です。ハニカムまたはそれ以降のバージョンに応じて、上矢印または下矢印またはスクローラーを使用するのではなく、ユーザーがキーボードで時間または分を手動で入力する場合。

ありがとうシコラ。

于 2013-11-08T13:57:03.350 に答える