Jetzt registrieren » Login
« Login

Passwort vergessen?

Du bist hier: Android Forum » Android Developer Forum » Android Entwickler Forum » onTimeChanged bekommt falsche Werte
Gehe zu: Neue Beiträge | Eigene Threads | Beobachtete Threads

onTimeChanged bekommt falsche Werte

Um aktiv im Android Forum teilnehmen zu können, musst Du Dich bei AndroidPIT registriert haben.

User-Foto
p ade
Google Plus

Rang: Android HiWi

Beiträge: 112

Eintrittsdatum: 24.10.2011

onTimeChanged bekommt falsche Werte
verfasst am 08.02.2012 14:54:05 — geändert am 08.02.2012 14:58:26
Hallo,

ich bin gerade dabei mir einen eigenen TimePickerDialog zu schreiben, hab hier allerdings das Problem dass er beim Minuten einstellen immer wieder in eine Endlosschleife läuft und dann natürlich mit einem "StackOverflow" aussteigt

Hier ist mal der Code (in html gepackt und preformatiert):
http://dl.dropbox.com/u/55496033/TimePicker.html

Anscheinend wird der onTimeChanged immer wieder eine falsche Zahl übergeben, obwohl ich den Parameter eigentlich explizit auf eine 0 bzw. eine 30 setze wodurch eigentlich die Rekursion enden sollte.
Er bekommt halt immer wieder eine 1 bzw. 31 übergeben, wodurch er halt immer wieder durch den Default läuft und sich dann immer wieder selbst aufruft.
Plan wäre halt dass er z.B. mit 42 in minuteOfHour anfängt, dann wird 0 in this.minute geschrieben und beim Wiederaufruf wird this.minute als Parameter übergeben. Dann ist beim nächsten Durchlauf minuteOfHour 0, er setzt es wieder in this.minute ein und das war's.

Hat jemand eine Idee was ich da falsch mache???
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Felixen
Google Plus Twitter

Rang: Android Doc

Beiträge: 248

Eintrittsdatum: 07.10.2011

RE: onTimeChanged bekommt falsche Werte
verfasst am 08.02.2012 20:40:58
Tach!

Anscheinend wird der onTimeChanged immer wieder eine falsche Zahl übergeben, obwohl ich den Parameter eigentlich explizit auf eine 0 bzw. eine 30 setze wodurch eigentlich die Rekursion enden sollte.

Du musst schon genauer und nachvollziehbarer beschreiben, wenn du eine genaue Antwort haben möchtest. Wenn ich raten soll, meinst du den Parameter minuteOfHour und übergibst ihn über zeitÄndern(). Allerdings nimmst du dort die Werte aus einer Eigenschaft. Und von der kann niemand wissen, was sie enthält, außer dem, der sich die Sache mit einem Debugger anschaut.

Apropos Debugger, du würdest dir das Leben einfacher machen, wenn du dir statt tausend und einem Log.v()-Aufruf die Sache mit dem Debugger anschauen würdest. Setz dir Breakpoints an strategisch wichtige Stellen (mindestens da wo der fragliche Wert erzeugt wird) und verfolge seine Änderungen beim schrittweisen Abarbeiten des Codes.


Felix.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
p ade
Google Plus

Rang: Android HiWi

Beiträge: 112

Eintrittsdatum: 24.10.2011

RE: onTimeChanged bekommt falsche Werte
verfasst am 09.02.2012 09:24:16 — geändert am 09.02.2012 09:25:42
Was der Debugger mir verrät verrät das Log mir auch und beim Loggen sitze ich nicht 15 Minuten da und klick mich durch die Einzelschritte.
Ich bin auch schon mit dem Debugger dadurch, aber wirklich neue Erkenntnisse brachte dass auch nicht, es wird halt einfach der falsche Wert im ZeitÄndern() übergeben, sowohl an onTimeChanged als auch an updateTime und ich blicke halt nicht durch woher der Wert kommt.
Vorallem gehe ich bei Stunden und beim DatePickerDialog mit der gleichen Logik daran und da funktioniert alles anstandslos.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Rafael K.de

Rang: Android GoldSenior

Beiträge: 1.394

Eintrittsdatum: 16.01.2011

RE: onTimeChanged bekommt falsche Werte
verfasst am 09.02.2012 09:39:46
Genau das ist doch das gute am Debugger.
Du hast die ganze Zeit die Werte von this.minute im Auge und kannst beobachten wann die sich auf unvorhergesehen Werte ändern.
Dann gibt es nämlich ein gelbes Highlight.

Ich habe schon vergessen, wann ich das letzte mal mit Log Ausgaben debuggt habe.
Auf irgendeinem Uralt-Server meine ich, wo man sich nicht per Remote-Debugger hinverbinden konnte :D

-----
Meine Apps: Verkaufswert Rechner für eBay -- 1-Klick Kleinanzeigen (eBay,dhd24,Quoka) -- Madvertise Umsätze -- AndroidPIT Umsätze -- Directupload.net / Abload.de

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
p ade
Google Plus

Rang: Android HiWi

Beiträge: 112

Eintrittsdatum: 24.10.2011

RE: onTimeChanged bekommt falsche Werte
verfasst am 09.02.2012 09:43:13
Wie gesagt, ich bin auch schon mit dem Debugger durchgelaufen, der hat die ganze Zeit den richtigen Wert drin, bis zum Neuaufruf der Funktion, da steht dann plötzlich wieder der falsche drin.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Rafael K.de

Rang: Android GoldSenior

Beiträge: 1.394

Eintrittsdatum: 16.01.2011

RE: onTimeChanged bekommt falsche Werte
verfasst am 09.02.2012 09:55:17
p a
Wie gesagt, ich bin auch schon mit dem Debugger durchgelaufen, der hat die ganze Zeit den richtigen Wert drin, bis zum Neuaufruf der Funktion, da steht dann plötzlich wieder der falsche drin.
Also in meiner Anfangszeit habe ich auch öfter versucht der JVM Fehler zu unterstellen, aber die funktioniert leider verdammt gut und auch deterministisch, wenn man keine Threads verwendet. Am Ende lag der Fehler immer in meiner Programmierung :D

Guck dir doch mal den Aufruf-Stack an, wenn der falsche Wert drinsteht.
Vielleicht ist der Aufruf garnicht Teil deiner Rekursion, sondern ein Systemaufruf (ich nehme an onTimeChanged ist eine überschriebene Methode).

Noch generell:
Ich würde sowas einfaches nicht mit einer Rekursion lösen, Rekursion ist idR. teurer als iteratives Vorgehen.
und auf garkeinen Fall würde ich callBackMethoden der Superklasse (die auch noch super. Aufrufe enthalten) als Rekursionsmethode verwenden.
Das sind Methoden, die auch vom System verwendet werden und die potenziell in mehreren Threads aufgerufen werden, was zu beliebigen Seiteneffekten führen kann.

-----
Meine Apps: Verkaufswert Rechner für eBay -- 1-Klick Kleinanzeigen (eBay,dhd24,Quoka) -- Madvertise Umsätze -- AndroidPIT Umsätze -- Directupload.net / Abload.de

Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
Felixen
Google Plus Twitter

Rang: Android Doc

Beiträge: 248

Eintrittsdatum: 07.10.2011

RE: onTimeChanged bekommt falsche Werte
verfasst am 09.02.2012 11:19:09
Tach!

p a
Was der Debugger mir verrät verrät das Log mir auch und beim Loggen sitze ich nicht 15 Minuten da und klick mich durch die Einzelschritte.

Jeder wie er mag. Mir wäre es zu aufwendig, die Log-Ausgaben einzufügen und hinterher wieder zu entfernen. Außerdem finde ich es einfacher, die markierte Programmzeile vor Augen zu haben, als Log-Ausgaben individuell zu gestalten um sie dann manuell zur Code-Stelle zuordnen zu können und müssen. Und am Ende muss der ganze Mist auch wieder raus.

Ich bin auch schon mit dem Debugger dadurch, aber wirklich neue Erkenntnisse brachte dass auch nicht, es wird halt einfach der falsche Wert im ZeitÄndern() übergeben, sowohl an onTimeChanged als auch an updateTime und ich blicke halt nicht durch woher der Wert kommt.

Du musst doch wissen, von woher bestimmte Programmteile aufgerufen werden. Selbst wenn es nicht dein Code ist, ist es wichtig, sowas zu wissen. Wenn also irgendwo ein Wert falsch ankommt, musst du weiter zurückgehen. Er wird ja irgendwo erzeugt. Beim Debugger hilft dir, wie schon erwähnt, der Aufruf-Stack, wenn du dir nicht sicher bist, wer wen aufruft.


Felix.
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
User-Foto
ramon oppde

Rang: Andryo

Beiträge: 1

Eintrittsdatum: 12.02.2012

RE: onTimeChanged bekommt falsche Werte
verfasst am 12.02.2012 17:12:46 (über AndroidPIT-App)
Codes
Antworten mit Zitat Antworten Link ±0     (0 Stimmen)
Du bist hier: Android Forum » Android Developer Forum » Android Entwickler Forum » onTimeChanged bekommt falsche Werte
Gehe zu: Neue Beiträge | Eigene Threads | Beobachtete Threads

AndroidPIT unterstützen

Gefällt Dir AndroidPIT? Wir freuen uns, wenn Du uns unterstützt. Wie das geht? Klicke einfach auf die unten stehenden Links.

Weiterempfehlen

Gefällt Dir AndroidPIT? Dann empfiehl uns bitte weiter!

Fragen / Hilfe

Du hast Fragen zu AndroidPIT oder willst noch mehr erfahren? Diese Links helfen Dir vielleicht weiter...

  Du liest gerade: onTimeChanged bekommt falsche Werte - Android Forum - AndroidPIT. Alle Zeitangaben in UTC+02:00. Es ist jetzt 22:40 Uhr.