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

von int zu EditText

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von paulinchen, 13.12.2010.

  1. paulinchen, 13.12.2010 #1
    paulinchen

    paulinchen Threadstarter Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    Hallo,

    ich möchte ein Berechnungsprogramm schreiben. Dazu muss ich aus dem EditText die Zahlen in integer umrechnen, um damit rechnen zu können.

    Anschließend muss ich die Werte doch wieder in Text umwandeln, damit ich sie in die EditText stecken kann, wie mach ich das?

    Anbei mal ein Ausschnitt aus dem Code, ich bekomme immer ein FC beim drücken auf den Button und ich denke, es liegt daran, dass er die Variable nicht umwandelt.
    Code:
            HS = (EditText) findViewById (R.id.StundenText);
            H = Integer.parseInt(HS.getText().toString());
            MS = (EditText) findViewById (R.id.MinutenText);
            M = Integer.parseInt(MS.getText().toString());
            SS = (EditText) findViewById (R.id.SekundenText);
            S = Integer.parseInt(SS.getText().toString());
            
            Button btn = (Button) findViewById (R.id.Berechne);
            
            btn.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    H = H*60;
                        M = (M+H)*60;
                    E = S+M;
                    Erg = (EditText) findViewById (R.id.LaengeText);
                    Erg.setText(E);
                    
    Danke
     
  2. DieGoldeneMitte, 13.12.2010 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Wenn ERG.setText(X) einen int bekommt, heisst das, dass er den Text aus aus der Resource mit der entsprechenden id nimmt. Das ist gedacht für setText( R.string.meldung ), also in Deinem Beispiel sicher nicht das, was Du willst.

    Wenn Du einen Int als Text ausgeben willst, musst Du ihn in einen Text sprich String umwandeln. Also setText( Integer.toString(X)) oder auch setText( ""+X ).

    Achja, und wenn Du die Werte der anderen Felder nicht im onClickListener deines Ergebnisknopfes ausliest, bekommst Du nicht die Werte, die dort zum Zeitpunkt des Buttondrucks drinne stehen. :winki:
     
    paulinchen bedankt sich.
  3. paulinchen, 13.12.2010 #3
    paulinchen

    paulinchen Threadstarter Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    Code:
    setText( Integer.toString(X))
    
    das wars, vielen Dank
     
  4. paulinchen, 13.12.2010 #4
    paulinchen

    paulinchen Threadstarter Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    Jetzt hab ich allerdings ein neues Problem.

    Und zwar wird beim drücken des Buttons jedes mal neu berechnet, auch wenn in den EditTexts gar nichts geändert wurde.

    Ich hab jetzt versucht mittels des Textwatchers die Eingabe in die EditText zu überwachen, aber irgendwie steh ich da auf dem Schlauch.
    Code:
    public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            Button btn = (Button) findViewById (R.id.Berechne);
            
            btn.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
    
                        HS = (EditText) findViewById (R.id.StundenText);
                        TextWatcher watcher = null;
                    HS.addTextChangedListener(watcher);
                    H = Integer.parseInt(HS.getText().toString());
                    MS = (EditText) findViewById (R.id.MinutenText);
                    MS.addTextChangedListener(watcher);
                    M = Integer.parseInt(MS.getText().toString());
                    SS = (EditText) findViewById (R.id.SekundenText);
                    SS.addTextChangedListener(watcher);
                    S = Integer.parseInt(SS.getText().toString());
                    Form = sF.getSelectedItem().toString();
                    Einheit = sE.getSelectedItem().toString();
                    
                      H = H*60;
                        M = (M+H)*60;
                    E =E+M+S;
                    
                    Erg = (EditText) findViewById (R.id.LaengeText);
                    Erg.setText(Integer.toString(E));
                    
                    }
               
            });
     
  5. DieGoldeneMitte, 13.12.2010 #5
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Du fügst in dem Moment, wenn sich der Text ändert, einen Listener für den Button ein - anstatt direkt zu rechnen.
     
  6. paulinchen, 13.12.2010 #6
    paulinchen

    paulinchen Threadstarter Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    Also muss ich nach dem onTextChanged den setOnClickListener einfügen?

    Aber wann rechne ich dann?

    Brauch ich denn für jedes EditText einen Textwatcher?

    Tschuldige für die vielen Fragen, aber ich steh noch total am Anfang mit der Android Programmierung :rolleyes2:
     
  7. paulinchen, 14.12.2010 #7
    paulinchen

    paulinchen Threadstarter Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    Weiß nicht, was ich jetzt anders gemacht habe, aber jetzt gehts...
     

Diese Seite empfehlen