1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

TextView Integer+1 Problem

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von 6771000, 09.05.2011.

  1. 6771000, 09.05.2011 #1
    6771000

    6771000 Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Hallo!

    Habe folgendes Problem:

    Ich möchte per Buttonpress den Wert eines TextViews um 1 erhöhen!

    Mein Ansatz wäre dieser:

    Code:
    String wetteinsatz = (String) txtbet.getText();
    int wetteinsatz_int = Integer.valueOf(wetteinsatz).intValue();
    wetteinsatz_int = wetteinsatz_int +1;
    //wetteinsatz = ""+wetteinsatz_int; (optional)
    txtbet.setText(wetteinsatz);
    
    Also meine Idee ist:
    Ich lege den String wetteinsatz an und weise ihm den Wert des Textfeldes zu.
    Danach wandle ich diesen in einen Integer um um damit rechnen zu können.
    Jetzt erhöhe ich den Wert um 1.
    (Hier bin ich mir nicht sicher) Ich wandle den Integer wieder in einen String zurück.
    Und dann setz ich dem Feld meinen um 1 erhöhten Wert wieder ein.

    Leider funktioniert das nicht und die Anwendung muss unerwartet beendet werden :/

    Wäre nett, wenn mir jemand damit helfen könnte! Vielleicht findet ja wer den Fehler ;)

    Danke schonmal im Voraus! lG 677
     
  2. Thyrion, 10.05.2011 #2
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,849
    Erhaltene Danke:
    2,452
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Wie genau sieht denn der Inhalt von txtbet.getText() zu dem Zeitpunkt aus?
    Irgendwelche Punkte, Komma, Währungszeichen etc. darin?

    EDIT: Die genaue Exception (per logcat) wäre wohl auch hilfreich ;)
     
    6771000 bedankt sich.
  3. Kranki, 10.05.2011 #3
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Der gepostete Code ist jedenfalls sauber bis auf den offensichtlichen Fehler, dass wieder der alte Wetteinsatz in das Feld zurückgeschrieben wird statt der erhöhte. Das führt aber nur zu falschem Verhalten und nicht zu einer Fehlermeldung.
    Ich tippe auch darauf, dass im TextView etwas steht, das man nicht zu einem Integer parsen kann. Logcat sollte da helfen.
     
    6771000 bedankt sich.
  4. 6771000, 10.05.2011 #4
    6771000

    6771000 Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Ich bedanke mich für eure Tipps!

    Jedoch bin ich heute morgen selbst drauf gekommen..

    LogCat hätte mir wohl geholfen, jedoch programmier ich bis jetzt ohne, weil ich das mit adb nicht hinbekommen hab ^^

    Die erste Zeile muss so aussehen: Der String Cast hat ihm irgendwie nicht gepasst :/ Obwohl er mir von NetBeans empfohlen wurde ^^
    Darum hab ich einfach den Inhalt der TextView mit der toString() Methode konvertiert:
    Code:
    String wetteinsatz = txtbet.getText().toString();
    Aber DANKE auf jeden Fall an euch, dass ihr euch die Mühe gegeben habt meinen Code anzuschauen und euch Gedanken darüber gemacht habt :)


    Das Ganze sieht jetzt so aus und funktioniert :)
    Code:
    String wetteinsatz = txtbet.getText().toString();
    int wetteinsatz_int = Integer.valueOf(wetteinsatz).intValue();
    wetteinsatz_int = wetteinsatz_int -1;
    wetteinsatz = ""+wetteinsatz_int;
    txtbet.setText(wetteinsatz); 
    
    lG 677
     
  5. Kranki, 10.05.2011 #5
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Laut API ist der Rückgabetyp CharSequence (hätte ich selber draufkommen können, das mal nachzusehen), das ist ein Interface. Das kann ein String sein, kann genausogut aber auch keiner sein. Wenn es keiner ist gibts eine ClassCastException.
    Es kann also durchaus sein, dass das in einem Beispiel funktioniert hat, aber der bessere Weg ist toString(), weil das immer klappt.
     
  6. 6771000, 11.05.2011 #6
    6771000

    6771000 Threadstarter Neuer Benutzer

    Beiträge:
    9
    Erhaltene Danke:
    0
    Registriert seit:
    08.01.2010
    Achso :) Danke für die Info!

    Ja für mich hat es auf den ersten Blick so gestimmt.. aber Übung macht den Meister :)
     

Diese Seite empfehlen