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

Newbie Frage TextEdit

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von jim, 02.05.2010.

  1. jim, 02.05.2010 #1
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    0
    Registriert seit:
    02.05.2010
    Hallo liebes Forum,

    ich bin Anfänger in der Android Programmierung und habe schon gegoogelt und im Forum, sowie Bücher gelesen und wahrscheinlich reicht mein Wissen gerade nicht aus um weiter zu kommen.

    Ich möchte gern eine Applikation schreiben bei der man einen Wert eingeben kann welcher dann für eine Berechnung intern genutzt wird. Letztlich möchte ich gern ein kleines Physikspiel bauen(als Training). Auf dem Weg dahin versuche ich die Werte in die Application zu bekommen(bzw. in die Instanz(wenn das so richtig ist)). Der Wert soll dort einfach eine velocity sein die darüber entscheidet ob ein Ball aus einer gewissen Höhe auf ein Brett fällt. Dieses Brett befindet sich am linken Rand und bewegt sich nach rechts mit der eingegebenen Geschwindigkeit. Ich scheitere momentan an dem einfachen Versuch den Wert zu bekommen, da die Applikation abstürzt wenn ich den empfangenen String in ein double casten möchte.

    Hier mal der Code

    ich habe in der main.xml

    <EditText
    android:text="0"
    android:id="@+id/EditText01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="number">///sinnvoll?? da kleinere Versionen die Funktion nicht unterstützen

    </EditText>
    und möchte jenen Wert dann später in einer Formel mit ein fließen lassen.

    dies hab ich so versucht
    //////////////////////////////////////////////////////////////
    ///getValue and cast to double
    inputValue = (EditText) findViewById(R.id.EditText01);
    String tmpString =inputValue.getText().toString();

    if(tmpString.length() != 0)
    { //nachdem die nächste Zeile ausdokumentiert wird läuft das Programm, ansonsten erhalte ich Fehlermeldung
    double inputValueAsDouble = Double.parseDouble(tmpString);
    }
    /////////////////////////////////////////////////////////////

    ist bestimmt nicht schwer, aber kann leider den Fehler nicht finden
     
  2. arallon, 02.05.2010 #2
    arallon

    arallon Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    6
    Registriert seit:
    21.04.2010
    Phone:
    HTC Desire
    für mich klingt das ganz danach, das der Wert in tmpString nicht zu einem Double gecastet werden kann. Was gibst du als Wert den genau ein? Und hast du dir den tmpString einfach mal ausgeben lassen oder einfach in eine TextView geschrieben, so das man wirklich sieht, was da enthalten ist?
     
  3. swordi, 02.05.2010 #3
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    da wird wohl eine

    numberformatexception kommen

    die du nicht abfängst
    achtung bei . und , als trennzeichen
     
  4. arallon, 02.05.2010 #4
    arallon

    arallon Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    6
    Registriert seit:
    21.04.2010
    Phone:
    HTC Desire
    deshalb hätte mich die Ausgabe des Strings bzw die korrekte Eingabe mal interessiert.
     
  5. swordi, 02.05.2010 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    was hast du denn eingegeben. zahlen ohne komma sollte ja funktionieren
     
  6. jim, 03.05.2010 #6
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    0
    Registriert seit:
    02.05.2010
    hello again,

    bin mir gerade nicht sicher, ich habe nun beim Erstellen vom EditText android:text="0" eingefügt und dann caste ich zu int(was auch mit mal funktioniert! Ich habe auch noch nie nen Wert vorher eingegeben sondern den default text="0". Nun möchte ich aber das der Wert sich aktualisiert wenn ich im EditText einen neuen Wert eingebe und wollte ein Listener benutzen. leider gibt es einen Error wenn ich

    // inputValue.setOnKeyListener( this);///Error benutze

    hier mal die .jar

    package com.jb;

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.EditText;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.TextView;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnKeyListener;


    public class gravity_Game extends Activity
    {


    private EditText inputValue;
    //private double inputValueAsDouble;
    private int velocity;
    /////////////////////////////////////////////////////////////////////////////////////////////
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //////////////////////////////////////////////////////////////////////////////////////////////
    ///spinner
    Spinner s1 = (Spinner)findViewById(R.id.Planets);
    ArrayAdapter<CharSequence> adapter =
    ArrayAdapter.createFromResource(this,R.array.Planeten, android.R.layout.simple_spinner_item);
    s1.setAdapter(adapter);
    /////////////////////////////////////////////////////////////////////////////////////////////
    ///getValue and cast to int
    inputValue = (EditText) findViewById(R.id.EditText01);
    // inputValue.setOnKeyListener( this);///Error

    String tmpString =inputValue.getText().toString();

    if(tmpString.length() != 0)
    {
    velocity = Integer.parseInt(tmpString);
    }
    /////////////////////////////////////////////////////////////////////////////////////////////
    ///Textview for Inputvalue
    TextView velocityValue = (TextView)findViewById(R.id.EditTextValue);
    velocityValue.setText( velocity + "ms");

    /////////////////////////////////////////////////////////////////////////////////////////////

    }

    /////////////////////////////////////////////////////////////////////////////////////////////
    /*void calculate()
    {

    }*/

    }


    vergesse ich was zu initialisieren?

    LG Jim (danke für die vielen Antworten bis jetzt)
    P.S. oll ich nen neuen Thread aufmachen, wegen des neuen Problems??
     
  7. arallon, 03.05.2010 #7
    arallon

    arallon Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    6
    Registriert seit:
    21.04.2010
    Phone:
    HTC Desire
    unterstreicht der da bei dir nichts in schönem rot?

    inputValue.setOnKeyListener( this);

    Das kann so denke ich gar nicht funktionieren solange deine Klasse den OnKeyListener nicht implementiert.
     
  8. jim, 04.05.2010 #8
    jim

    jim Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    0
    Registriert seit:
    02.05.2010
    ja vielen Dank für den Hinweis! --> erledigt
    Ich hätte aber zur gleichen Problematik eine Frage. Ein Ziel war es bei onClickListener() die Funktionalität zu besitzen, bei Eingabe einer Zahl, diese zu lesen und erstmal in ein Textfield zu schreiben. Leider funktioniert das nicht. Ich clicke und clicke und kann höchsten ein neuen Wert eingeben. Ich habe da was gelesen, dass die Grundfunktionen vom Edittext stören. Leider war die Quelle nicht genau... .

    aktuelle Code
    Code:
     inputValue = (EditText) findViewById(R.id.EditText01);
            
            inputValue.setOnClickListener( new OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                     String tmpString =inputValue.getText().toString();
                        
                        if(tmpString.length() != 0)
                        {
                            velocity  = Integer.parseInt(tmpString);
                        }
                    
                }
            });
    
    Ich möchte weniger ein Button zum Setzen des Wertes benutzen, muss ich dazu ein anderen Listener benutzen und mit dem Edittext setzen?

    Herzlichen Dank!
     
  9. arallon, 04.05.2010 #9
    arallon

    arallon Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    6
    Registriert seit:
    21.04.2010
    Phone:
    HTC Desire
    Also zum einen hattest du vorher einen onKeyListener, nun ist es ein onClickListener, zum anderen weiss ich nicht genau ob der Code bei der Funktion onClick überhaupt ausgeführt wird. Habe die Listener bisher immer anders eingebaut. Aber onClick ist denke ich auch nicht gerade das was du suchst. Es soll ja passieren nachdem du dort was eingegeben hast. Da gibts noch einen Listener der auf die "Enter" Eingabe reagiert in einem Textfeld. Das blosse Verlassen einen Textfeldes kann soweit ich weiss keinen event ausführen, es sei denn ein Verlassen wäre gleichgesetzt mit einem "Enter"

    Das weiss ich aber allerdings nicht, da ich mich mit Android auch erst seit kurzem beschäftige und die ganzen Listener noch nicht vollständig durchprobert habe.

    wenn du einfach mal "inputValue. " schreibst, dann sollte er dir doch auch auflisten, welche Funktionen alle möglich sind. Les dich da einfach mal durch die Listener oder schau mal in die API. Ich denke das führt am schnellsten zu einem Ergebnis.

    Grüße
     
  10. jim

    jim Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    74
    Erhaltene Danke:
    0
    Registriert seit:
    02.05.2010
    hello again,

    ja vielen Dank für den Tipp mit dem Punktoperator.... .
    Die verwendung von Listener bzw. deren unterschiedliche initialisierung habe ich hier gefunden.

    http://tseng-blog.nge-web.net/blog/...g-listeners-in-your-android-java-application/

    der Code sieht jetzt so aus
    Code:
    inputValue = (EditText) findViewById(R.id.EditText01);
            
            inputValue.setOnEditorActionListener(new OnEditorActionListener()
            {
                @Override
                  public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
                {
                    if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
                    {
                        //velocity = getValue and cast to double
                        velocityDouble = Double.parseDouble(inputValue.getText().toString());
                        
                        ///Textview for Inputvalue
                        TextView velocityValue = (TextView)findViewById(R.id.EditTextValue);
                        velocityValue.setText( velocityDouble + "ms");
                    }
                    return false;
                }
            });
    soweit funtioniert jetzt alles wie ich es erstmal wollte!
    Vielen Dank nochmal und einen schönen Tag!!
    LG Jim

    P.S. gibts hier kein Frage wurde beantwortet Button???
     
    Zuletzt bearbeitet: 05.05.2010

Diese Seite empfehlen