Android:如何在input时从TimePicker获取时间

我有一个DialogPreference实现了一个简单的TimePicker.OnTimeChangedListener(见下文)。 通过单击+/-button设置时间​​很好。 但我不知道如何保存时间select器的状态,当用户input时间直接进入文本框。 访问当前的textfield值可能就足够了,所以我可以将它保存在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); } } } // ... } 

Solutions Collecting From Web of "Android:如何在input时从TimePicker获取时间"

我没有注意到这个问题,直到我偶然发现这个问题。 有一个简单的解决scheme:当用户在我的应用程序中更改date和时间时,我只需调用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(); 

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

我不知道是否仍然可以在onDialogClosed(boolean positiveResult)中访问timepicker。 如果没有,find另一个callback使用时,它仍然是。

希望这可以帮助。

目前为止,只有非常糟糕的解决方法…

 ViewGroup v = (ViewGroup) timePicker.getChildAt(0); ViewGroup numberPicker1 = (ViewGroup) v.getChildAt(0); ViewGroup numberPicker2 = (ViewGroup) v.getChildAt(1); String hours = ((EditText) numberPicker1.getChildAt(1)).getText().toString(); String mins = ((EditText) numberPicker2.getChildAt(1)).getText().toString(); selectedTime = hours+":"+mins;