Android:如何在输入时从TimePicker获取时间

cod*_*ody 11 android dialog timepicker android-preferences sharedpreferences

我有一个DialogPreference实现了一个简单的TimePicker.OnTimeChangedListener(见下文).通过单击+/-按钮设置时间​​非常有效.但是我不知道如何在用户输入时直接进入文本字段时保存timepicker的状态.访问当前的文本字段值就足够了,所以我可以将它保存在onDialogClosed中.但是timePicker.getCurrentHour()不会这样做.请帮忙...

public class TimePreference extends DialogPreference implements
        TimePicker.OnTimeChangedListener {
// ...
@Override
public void onTimeChanged(TimePicker view, int hours, int minutes) {
    selectedHours = hours;
    selectedMinutes = minutes;
}

@Override
public void onDialogClosed(boolean positiveResult) {
    if(positiveResult) {
        String timeString = selectedHours + ":" + selectedMinutes;
        if(isPersistent()) {
            persistString(timeString);
        }
    }
}
// ...
}
Run Code Online (Sandbox Code Playgroud)

Lar*_*oid 48

在我偶然发现这个问题之前,我没有注意到这个问题.有一个简单的解决方案:当用户完成更改我的应用程序中的日期和时间时,我只需调用finish()并在onPause()或onStop()或onDestroy()中执行此操作:

// force the timepicker to loose focus and the typed value is available !
timePicker.clearFocus();
// re-read the values, in my case i put them in a Time object.
time.hour   = timePicker.getCurrentHour();
time.minute = timePicker.getCurrentMinute();
Run Code Online (Sandbox Code Playgroud)

在此之后,我将time.toMillis(false)值存储在我的表的相应列中.

我不知道你的onDialogClosed(boolean positiveResult)是否仍然可以访问timepicker.如果没有,找到另一个回调,当它仍然存在时使用.

希望这可以帮助.