Android: Cómo obtener el tiempo de un TimePicker cuando se escribe en

Tengo un DialogPreference que implementa un simple TimePicker.OnTimeChangedListener (ver más abajo). Ajustar la hora haciendo clic en los botones +/- funciona muy bien. Pero no sé cómo guardar el estado del timepicker cuando el usuario mecanografió en el tiempo directamente en el textfield. Podría ser suficiente para acceder al valor de campo de texto actual, por lo que sería capaz de persistir en onDialogClosed. Pero timePicker.getCurrentHour () no lo hará. Por favor ayuda…

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); } } } // ... } 

No había notado este problema hasta que tropecé en esta pregunta. Hay una solución simple: cuando el usuario está terminado cambiando la fecha y la hora en mi aplicación, simplemente llamo finish () y en onPause () o onStop () o onDestroy () hago esto:

 // 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(); 

Después de esto, almacenar el valor time.toMillis (false) en la columna apropiada de mi tabla.

No sé si el timepicker todavía es accesible en su onDialogClosed (boolean positiveResult). Si no es así, busque otra devolución de llamada para utilizarla cuando todavía esté.

Espero que esto ayude.

Sólo una muy mala solución hasta ahora …

 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; 
  • Selector de tiempo que muestra el tiempo como 4: 7 en lugar de 04:07
  • ¿Cómo configurar el TimePickerDialog a 24 horas?
  • OnTimeSet también se llama al descartar TimePickerDialog
  • TimePicker hora no se actualiza después de cambiar a 24h
  • TimePicker - ¿Cómo obtener AM o PM?
  • Android: enfoque en elementos TimePicker
  • TimePicker NullPointerException en ICS
  • ¿Cómo implementar android Minutos-Segundos selector?
  • Convertir la fecha y la hora en milisegundos en Android
  • Datepicker y timepicker - establece valores máximos y mínimos en android
  • ¿Cambiar el título en un TimePicker?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.