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

2 Solutions collect form web for “Android: Cómo obtener el tiempo de un TimePicker cuando se escribe en”

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; 
  • ¿Cómo se utilizan los skins personalizados de Datepicker y Timepicker?
  • Android TimePicker no se muestra bien en modo horizontal
  • ¿Cómo agregar timePicker usando fragmento?
  • Diálogo de selección de fecha y hora
  • Android: enfoque en elementos TimePicker
  • Excepción de puntero nulo de TimePicker al pulsar los botones más o menos
  • Android TimePicker Botón AM / PM que no invoca onTimeChanged
  • ¿Cómo configurar el TimePickerDialog a 24 horas?
  • Cómo cambiar el color de las líneas de TimePicker en el tema Appcompat?
  • Cambiar el color de texto de Time Picker
  • Android - Nuevo estilo de calendario DatePicker y TimePicker
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.