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); } } } // ... }
- Android: enfoque en elementos TimePicker
- Selector de tiempo que muestra el tiempo como 4: 7 en lugar de 04:07
- OnTimeSet también se llama al descartar TimePickerDialog
- Android TimePicker no se muestra bien en modo horizontal
- TimePicker hora no se actualiza después de cambiar a 24h
- Cómo cambiar el color de las líneas de TimePicker en el tema Appcompat?
- Android TimePicker (Estilo de rueda) no responde correctamente a los gestos de desplazamiento dentro de ScrollView
- ¿Hay alguna forma de usar cancel en Android JellyBean TimePickerDialog?
- Excepción de puntero nulo de TimePicker al pulsar los botones más o menos
- Cómo establecer un intervalo de minutos personalizado en TimePickerDialog en Android
- Usar TimePicker o DatePicker en la pantalla Preferencias en Android
- BetterPickers sin una biblioteca de soporte
- Obtener el valor del selector de fecha y hora a partir de un solo fragmento de diálogo y establecerlo en EditText
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;
- Android – ¿Cómo dividir una vista en 4 partes iguales?
- Cómo resolver java.lang.AssertionError al crear OkHttpClient en mockito?