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; 
  • Datepicker y timepicker - establece valores máximos y mínimos en android
  • ¿Es posible quitar el botón AM / PM de TimePicker?
  • ¿Cómo implementar android Minutos-Segundos selector?
  • Timepicker de los desarrolladores de Android no se permite estática
  • Android - Nuevo estilo de calendario DatePicker y TimePicker
  • Android: Establecer el tiempo en el selector de tiempo con el tiempo mostrado en la vista de texto
  • Obtener el total de horas de dos timepicker
  • ¿Cómo configurar el TimePickerDialog a 24 horas?
  • Las entradas de AppCompatSpinner no abren TimePickerDialog al seleccionarla por segunda vez. Por favor ver detalles
  • ¿Cómo agregar timePicker usando fragmento?
  • TimePickerDialog y AM o PM
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.