Text Watcher Problem

  • Hallo liebe Community :)


    Ich bin bei meiner "neuen App" ( ein kniffel block )auf ein kleines Problem gestoßen und zwar habe ich eine Tabelle erstellt , die automatisch nach ( zeitgleich zur ) Befüllung ein Ergebnis berechnen soll ... ich habe das ganze per TextWatch soweit auch hin bekommen nur habe ich das Problem dass das ganze nur funktioniert wenn ich Feld 1 befüllt habe... fange ich zB bei Feld 2 an spuckt er mir das Ergebnis 0 aus ...
    Als Antwort wegen Zeichen Begrenzung meine class vllt kann mir ja jemand helfen :/


    Vielen Dank im Voraus :)
    Ebi



  • Hallo


    Eine Frage deine SpielerObjekte sind bestimmtEditTexte oder?



    Du hast allen den Texten den gleichen Watcher zugeordnet . Somit kommt jede änderung egal welche Variable geändert wird in dem Watcher an.
    Nur weist du nicht wer bzw. von welchen EditText der Watcher aufgerufen wurde.
    Denn es ist ja zum Zeitpunkt des Aufrufs der Methode nur eine Variable geändert worden. Was der neue Wert ist der in der Variablen steht ist in dem „CharSequence s“ Parameter enthalten. Wie gesagt weist nur nicht wer der Aufrufer ist.


    Wie ist das sind deine Edittexte Default lehr oder haben die einengen Wert.


    Wenn in den EditTexten kein int wert ist wird beim parsen auch in den Catch zweig verzweigt.


    Übrigens wird die Methode bei jeden Tastendruck aufgerufen auch bei Del, Enter, Spase,….


    Es macht keinen sinn im Watcher alle Objekte auszulesen. Schon gar nicht welche die noch keinen Wert haben den dann bricht die Methode ab und geht in den Catch Zweig.


    Da du so nicht bestimmen kannst von welchen Tedittextder aufrufkommt und du somit alle variablen setzen willst wo vielleicht noch gar kein Wert enthalten ist kann das nicht gehen.


    Entweder für jeden Edittext einen eigenen Watcher oder du lässt dir was anderes einfallen um den Aufrufer zu bestimmen.


    Normalerweise macht man für jeden Text einen eigenen Watcher.

  • huhu :)
    Vielen vielen Dank schon mal für deine Antwort:)
    ja sind alles edittext und Standard mäßig leer .... es funktioniert ja aber eben erst wenn ich bei Spieler1Einsen anfange ... wenn ich den ersten Eintrag bei spieler1Zweier mach setzt er summe = 0 ... wenn ich dann bei Spieler1Einser was eintrage dann fängt er an zusammen zu zählen ... für jeden edittext nen eigenen watcher ? Bei ca 130 edittext Feldern etwas viel oder? :/ gibt s denn ne andere Funktion die "live" die Eintragungen in den edittexten registriert und dann zusammen rechnet? Ich habe nichts gefunden bisher :(

  • Also erstmal würde ich alle Felder Default auf 0 setzen.


    Damit auch wirklich alle geparst werden können. Und es nicht in das Catch geht.


    Wie kann ich mir das vorstellen wie viele zahlen gibst du in ein Feld ein? Bedenke auch das die Methode bei jeden Tastendruck auch wenn du Leertaste , Zurück, Cursor drückst aufgerufen wird.


    Auch wen du bz 12 ein gibst wird einmal bei der Eints und auch bei der Zwei die Methode aufgerufen. Auch wen du Buchstaben eingibst und da geht es zur Catch.


    Wenn zb der ersteSpieler1Einsen Null oder kein Integer ist geht es zur Catch und das Werte abfragen wird beendet. Das addieren kann dann natürlich nicht stimmen den deine abfragen wurden unterbrochen.


    In der Catch könntest du auch analysieren wo er hängen geblieben ist.


    Ich würde das addieren auch in das try mit nehmen oder in der catch den teil überspringen.


    Denn wenn das parsen an einer Stelle schief gehtbrauchst du auch nicht mehr addieren das Ergebnis ist falsch.


    Du musst immer sorge tragen das alle Felder geparst werden können, damit auch in allen int Variablen ein gültiger wert ist.


    Wo definierst du zb. a1, b1 …. Im Klassenrumpf oder?

  • Hallo nochmals :)
    Ich häng die class mal als Txt an vllt kannst du dann alles anschauen und sehen woran es liegt und weißt dann vllt auch was ich meine mit den ewig vielen Eingaben :P die edit Text sind auf number und maximal 3 stellen begrenzt.
    Lg und nochmals danke im voraus

  • Wie ich schon sagte setze alle EditTexte im XML auf „0“ und nicht „null“ also nicht lehr
    Damit das parsen nicht abbrechen kann. Und wenn doch keine Addition machen. Den das Ergebnis wird nicht stimmen.




    Denn wenn der der erste Text lehr ist und du den zweiten eingibst wird schon beim ersten Parsen in die Catch verzweigt das Ergebnis wird fasch sein. Zu dem Parsen des zweiten Wertes (Feld) kommt es gar nicht. da ja beim ersten das Parsen mit dem XML default wert null zum fehler fürt. hoffe das leuchtet dir nun ein.

  • so einfach nicht.


    dann mache vor dem parsen eine Abfrage ob es null ist und überspringe das pasen bei null also lehr . damit es in der abfrage weiter geht un nicht nach catch geht. denn die int Variabe ist ja 0
    damit meine ich vor jedem Feld . also baue die eine Methode dazu.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!