Android: Wie bekomme ich die Zeit von einem TimePicker, wenn es eingegeben wird

Ich habe eine DialogPreference, die einen einfachen TimePicker.OnTimeChangedListener implementiert (siehe unten). Das Einstellen der Zeit durch Klicken auf die +/- Tasten funktioniert super. Aber ich weiß nicht, wie man den Zustand des Timepickers sichert, wenn der Benutzer die Zeit direkt in das Textfeld eingegeben hat. Es könnte ausreichen, um auf den aktuellen Textfeldwert zuzugreifen, also könnte ich es in onDialogClosed bestehen bleiben. Aber timePicker.getCurrentHour () wird es nicht tun. Bitte helfen …

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 Layout Platzhalter für dynamisch hinzugefügte Ansicht
  • ListView-Item wird nicht "ausgewählt"
  • Kann nicht sehen, eine Datei in Windows von einer Android-App auf SD-Karte geschrieben, wenn ich "Force Close" die App
  • So geben Sie die Option zur Auswahl von Wi-Fi oder GPRS für Netzwerk-Konnektivität in Android-App
  • IabHelper Android Bug (NullPointerException) launchPurchaseFlow?
  • Hintergrundauswahl in RecyclerView Item
  • Überprüfen Sie die Internetverbindung in Android WebView (Cordova)
  • Verständnis Android's Webview addjavascriptinterface
  • ActiveAndroid App autocloses, wenn auf Lebkuchen laufen
  • Android: Mock Location wechselt nach einigen Sekunden wieder nach Original
  • Android-Kamera-Vorschau gestreckt mit Grafika CameraCapture-Code
  • Eine Taste - 3 App speichert - wie man den Benutzer zum entsprechenden Appstore umleitet?
  • 2 Solutions collect form web for “Android: Wie bekomme ich die Zeit von einem TimePicker, wenn es eingegeben wird”

    Ich hatte dieses Problem nicht bemerkt, bis ich auf diese Frage stolperte. Es gibt eine einfache Lösung: Wenn der Benutzer das Datum und die Uhrzeit in meiner App geändert hat, rufe ich einfach fertig () und in der onPause () oder onStop () oder onDestroy () Ich tue dies:

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

    Danach speichere ich den Wert time.toMillis (false) in der entsprechenden Spalte meiner Tabelle.

    Ich weiß nicht, ob der Timepicker noch in deinem onDialogClosed (boolean positiveResult) zugänglich ist. Wenn nicht, finden Sie einen anderen Rückruf zu verwenden, wenn es noch ist.

    Hoffe das hilft.

    Nur eine sehr schlechte Problemumgehung …

     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; 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.