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

EditText mit getText() auslesen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Duckemai, 03.08.2010.

  1. Duckemai, 03.08.2010 #1
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Hallo zusammen,

    ich würde gerne ein EditText (ausgabe) auslesen. Aber mit:
    String eingabe = ausgabe.getText().toString();

    geht das ja gar nicht. Auch nicht mit:

    eingabe = ausgabe.getEditableText().toString();
    eingabe = (String)ausgabe.getText().toString();
    eingabe = String.valueOf(ausgabe.getText().toString());
    usw.
    Habe zig Sachen versucht. Ohne Erfolg aber auch ohne Fehlermeldungen von Eclipse.

    Wie lautet denn nun der richtige Befehl?

    Besten Danke
    Duckemai
     
  2. swordi, 03.08.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    EditText et = (EditText)findViewById(R.id.ausgabe);
    String text = et.getText().toString();
     
  3. funk, 03.08.2010 #3
    funk

    funk Android-Hilfe.de Mitglied

    Beiträge:
    53
    Erhaltene Danke:
    1
    Registriert seit:
    21.12.2009
    Phone:
    Motorola Milestone
    ..und was macht man, wenn bei diesem Befehl die ganze Zeit die App aussteigt?

    Ich bin ein bißchen am verzweifeln:

    ich habe ganz normal

    EditText X;
    String x_value;
    ...
    X = (EditText) findViewById (R.id.x_position);
    ...
    x_value = X.getText().toString();

    und er steigt mir jedes Mal aus, wenn er eben den Text aus X auslesen soll!
    Das ganze ist in einem AlertDialog und ich habe ein CustomLayout mit LayoutInflater
    für den Dialog genommen; habe es zuerst mit .setPositiveButton versucht und
    mittlerweile einen eigenen ClickHandler geschrieben...alles mit dem gleichen
    Ergebnis!

    Das kann doch gar nicht so schwer sein...

    Buhu,
    Frank

    PS: so ganz nebenbei funktioniert auch mein .setOnItemClickListener nicht mehr
    richtig, mit dem ich den Dialog auslöse
     
  4. Duckemai, 04.08.2010 #4
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Hallo funk,
    hallo swordi,

    auch mein App verhält sich ausgesprochen merkwürdig, wenn ich versuche ein EditText auszulesen. Aber es liegt nicht am App selbst. Folgendes ist passiert:

    Wenn ich aus dem EditText den Wert 5 + (fünf,Leerzeichen,plus) auslesen möchte - nämlich so wie swordi beschrieben hat - so geht das genau einmal. Nämlich dann, wenn ich Eclipse frisch gestartet habe. Danach liest er es nicht mehr aus. Hingegen den Wert 5 (fünf) kann er immer auslesen. Ich habe mal die catlog angehängt. Leider kann ich sie nicht interpretieren. Vielleicht gibt es hier einen Profi, der das kann und weiß, wonach er zu suchen hat.
    Erste log ist nach Eclipsestart, wenn 5 + funktioniert.
    Zweite ist, wenn ich ein zweites Mal 5 + auslesen möchte und er aber nichts ausliest:

    Besten Dank
    Duckemai

    Anhang
     

    Anhänge:

  5. swordi, 04.08.2010 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    guck mal ob dein X nicht zufällig null ist
     
    Duckemai bedankt sich.
  6. Duckemai, 04.08.2010 #6
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Hm! Ich habe nun ein kleines App mit TextEdit und einem Button gebastelt. Da funktioniert es tadellos.

    Also scheint es doch ein Fehler in meiner Programmlogik zu sein. Ich sehe zwar nicht, wo mein TextEdit NULL sein sollte, aber Du wirst recht haben.

    Besten Dank
    Duckemai
     
  7. swordi, 04.08.2010 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wenn du ein wenig mehr code zeigen würdest, wäre es vielleicht einfacher. hellsehen können wir hier leider (noch) nicht
     
  8. Duckemai, 04.08.2010 #8
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Der Quellcode ist leider schon tapetenlang.
    Hier aber die wesentlichen Stellen. Alles in einer Klasse:

    class...
    private EditText ausgabe;

    onCreate...
    ausgabe = (EditText) findViewById(R.id.EditText01);

    //hier wird in das EditText-Feld etwas per user reingeschrieben

    onClick...Button
    private void plusminus (){
    String test ="hallo";
    test = ausgabe.getText().toString(); // keine Ausgabe, obwohl in
    EditText etwas steht.

    Na, das gibt wohl nicht viel her, oder?

    Duckemai
     
  9. swordi, 04.08.2010 #9
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    das sind nicht die wesentlichsten stellen

    zb : wo ist deine setContentView??
     
  10. the_alien, 04.08.2010 #10
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Nein das gibt nicht viel her. Falls es dich nicht stört (also das nur ne Übungsapp ist) dann hau den Quellcode mal auf pastebin und verlinke das hier.
     
  11. Duckemai, 04.08.2010 #11
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Den ganzen Text kann ich hier leider nicht abdrucken.
    Aber es ist tatsächlich ein Problem des Debuggers.
    Das eigentliche Problem war ja, dass er einfache Zahlen wie zB "5" oder "12345" auslesen konnte, aber nicht
    "5 +".

    Die "5 +" wird durch Buttondruck wie folgt eingegeben und erscheint auch:
    eingabe += String.valueOf(5);
    ausgabe.setText(String.valueOf(eingabe));//Ausgabe

    Die 5 erscheint.

    Dann wird das Plus per Button gedrückt und ausgegeben:
    ausgabe.setText(String.valueOf((Math.round(zwischenErg))+ " " + rechenzeichen));

    Jetzt steht im Display 5 +

    Wenn ich nun Frage:
    String test ="hallo";
    test = ausgabe.getText().toString();

    ist test leer. Hätte ich aber zB: 123 eingegeben, dann würde er mir auch 123 anzeigen.
    Aber wenn ich mit dem Debugger einen Haltepunkt unmittelbar HINTER
    "test = ausgabe.getText().toString();" auswähle, dann befüllt er test immer. Wenn ich aber mit dem Debugger nur darüber laufe, nicht!!!
    Komisch, oder?
     
  12. funk, 04.08.2010 #12
    funk

    funk Android-Hilfe.de Mitglied

    Beiträge:
    53
    Erhaltene Danke:
    1
    Registriert seit:
    21.12.2009
    Phone:
    Motorola Milestone
    Ok, jetzt doch mal ausführlicherer Quellcode, da ich einfach keine Lösung finde:

    hier also die Ausschnitte aus meiner "main", in der eine Bluetooth-Discovery gefundene Devices in einer ListView auflistet. Wenn ich auf einen Eintrag klicke soll sich ein AlertDialog mit zwei EditText-Feldern öffnen. In diese kann man dann die X- und Y-Koordinate des gefundenen Device eintragen.
    EDIT: Ich hab jetzt nochmal eine kleine Test-App geschrieben, die nur eben einen Toast ausgeben soll mit den Werten aus den beiden EditText-Feldern...

    Es funktioniert alles soweit bis ich zu dem Punkt

    edit[0] = X.getText().toString();

    komme. Da schmeißt er mir eine IllegalStateException und ich weiß nicht warum

    Code:
    package de.zeh.android.EditTextTest;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.Toast;
    import android.widget.AdapterView.OnItemClickListener;
    
    public class EditTextTest extends Activity {
        String [] content = {"a", "b", "c", "d"};
        String [] edit;
        ArrayAdapter<String> mArrayAdapter;
        AlertDialog positionAlert;
        
        
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            mArrayAdapter = new ArrayAdapter<String> (this, R.layout.list_entries);
            ListView newListView = (ListView) findViewById(R.id.new_devices);
            newListView.setAdapter(mArrayAdapter);
            
            for (int i = 0; i<4; i++) {
                mArrayAdapter.add(content[i]);
            }
            
            newListView.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick (AdapterView<?> a, View v, int list_position, long id) {
                    AlertDialog.Builder position_builder = new AlertDialog.Builder(EditTextTest.this);
                    LayoutInflater factory = LayoutInflater.from(EditTextTest.this);
                    final View positionEditView = factory.inflate(R.layout.position_edit, null);
                    position_builder.setView(positionEditView);
                    positionAlert =  position_builder.create();
                    positionAlert.show();
                }});
        }
        
        public void buttonClickHandler(View v) {
            switch (v.getId()){
            case R.id.pos_edit_button_ok:
                final EditText X = (EditText) findViewById (R.id.x_position);
                final EditText Y = (EditText) findViewById (R.id.y_position);
                edit[0] = X.getText().toString();
                edit[1] = Y.getText().toString();
                Log.d("Log 4.8",edit[0] + edit[1]);
                positionAlert.dismiss();
                Toast.makeText(getApplicationContext(), edit[0]+", "+edit[1], Toast.LENGTH_SHORT).show();
            break;
            case R.id.pos_edit_button_cancel:
                positionAlert.dismiss();
            break;
            }
        }
    }
    
    hier die position_edit.xml

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="fill_parent"
        android:layout_height="fill_parent">
            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:text="1tes Eingabefeld" />
            <EditText android:id="@+id/x_position" 
                  android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:numeric="decimal"/>
            <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:text="2tes Eingabefeld" />
            <EditText android:id="@+id/y_position"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:numeric="decimal"/>
            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/position_edit_buttons"
                   android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_alignParentBottom="true" >
            <Button
                android:id="@+id/pos_edit_button_ok"
                android:layout_weight="50"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="OK"
                android:onClick="buttonClickHandler" />
            <Button
                android:id="@+id/pos_edit_button_cancel"
                android:layout_weight="50"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Cancel"
                android:onClick="buttonClickHandler" />
        </LinearLayout>
    </LinearLayout>
    hier die list_entries.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:padding="5dp"
    />
    und schlussendlich die main.xml
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        > 
    <ListView
            android:id="@+id/new_devices"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:stackFromBottom="true"
        />
    </LinearLayout>
    Bin für jede Hilfe dankbar!!

    Das macht für mich einfach überhaupt keinen Sinn...
     
    Zuletzt bearbeitet: 05.08.2010
  13. Duckemai, 05.08.2010 #13
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Also Leute,
    ich bin da über etwas gestolpert zu diesem Thema, das ich eigentlich nicht glauben kann. Ich hatte nun an mehrerer Stellen im Programm das Problem, das Werte aus Variablen plötzlich verschwanden. zB

    1. int zahl = 0;
    ...
    45. eingabe +=String.valueOf(zahl).toString();
    46. ausgabe.setText(eingabe);//Ausgabe

    Wenn ich mit dem Debugger von Zeile 45 auf die Zeile 46 mit StepOver gehe, dann steht in eingabe:
    eingabe = 0
    Wenn ich noch mal StepOver drücke, also die Zeile 46 verlasse, dann steht in eingabe:
    eingabe = "". Obwohl ich mich noch in der Methode befunden habe.

    Dann habe ich die Zeile 45 so geändert:
    eingabe = eingabe + String.valueOf(zahl).toString();

    Dann behielt er den Wert 0 in eingabe auch bei.
    Als ich dann die Zeile 45 wieder zurück verändert habe in:

    eingabe +=String.valueOf(zahl).toString();

    ging es plötzlich auch und der Wert eingabe = 0 wurde beibehalten.

    HÄÄÄ! Ist das von einem schlauen Kopf unter Euch erklärbar?

    Oder spinnt der Debugger in Eclipse?

    Vielen Dank
    Duckemai
     
  14. funk, 05.08.2010 #14
    funk

    funk Android-Hilfe.de Mitglied

    Beiträge:
    53
    Erhaltene Danke:
    1
    Registriert seit:
    21.12.2009
    Phone:
    Motorola Milestone
    So, jetzt mal noch ne try/catch um das getText().toString() gebaut,
    aber der Stacktrace sagt mir auch irgendwie mal gar nichts..

    Code:
    08-05 14:01:10.249: ERROR/EditTextTest(28475): de.zeh.android.EditTextTest.EditTextTest$1$1.onClick(EditTextTest.java:53)
    08-05 14:01:10.249: ERROR/EditTextTest(28475): com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
    08-05 14:01:10.249: ERROR/EditTextTest(28475): android.os.Handler.dispatchMessage(Handler.java:99)
    08-05 14:01:10.256: ERROR/EditTextTest(28475): android.os.Looper.loop(Looper.java:123)
    08-05 14:01:10.256: ERROR/EditTextTest(28475): android.app.ActivityThread.main(ActivityThread.java:4363)
    08-05 14:01:10.256: ERROR/EditTextTest(28475): java.lang.reflect.Method.invokeNative(Native Method)
    08-05 14:01:10.256: ERROR/EditTextTest(28475): java.lang.reflect.Method.invoke(Method.java:521)
    08-05 14:01:10.256: ERROR/EditTextTest(28475): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    08-05 14:01:10.264: ERROR/EditTextTest(28475): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    08-05 14:01:10.264: ERROR/EditTextTest(28475): dalvik.system.NativeStart.main(Native Method)
    
    Hab ich erwähnt, dass ich am Verzweifeln bin? Das ist doch eigentlich ne
    ganz simple Angelegenheit...
    Wenn erwachsene Männer bitter weinen....
     
  15. Duckemai, 05.08.2010 #15
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Beiträge:
    227
    Erhaltene Danke:
    6
    Registriert seit:
    05.04.2010
    Phone:
    Nexus
    Ich vermute, dass Dein Thread nicht von all zu vielen gelesen wird, da Du ihn mit in meinen geschrieben hast. Wenn keiner antwortet, dann mache doch einen eigenen Thread auf, den Du dann auch entsprechend Deines Problems nennen kannst. Das hätte sicherlich größere Erfolgsaussichten ;)

    Ich kann Dir leider nicht helfen, da ich derzeit auch tränenblind bin und mir auch noch die Erfahrung fehlt um Dein Problem wirklich zu verstehen.

    Gruß
    Duckemai
     
  16. FelixL, 06.08.2010 #16
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    @funk:

    Bei mir funktioniert

    Damit wird der im xml vordefinierte Text ausgegeben.
    Ich probier es nochmal mit nem Button und geänderten Texten.

    Geht auch. Getestet auf 2.2
     
    Zuletzt bearbeitet: 06.08.2010
  17. funk, 06.08.2010 #17
    funk

    funk Android-Hilfe.de Mitglied

    Beiträge:
    53
    Erhaltene Danke:
    1
    Registriert seit:
    21.12.2009
    Phone:
    Motorola Milestone
    Hey Felix,

    das Ganze ging bei mir ja auch schon in einer anderen App: da hab ich
    einen Dateinamen eingeben lassen in einem AlertDialog und gab es keine
    Problem beim Auslesen des getText() ... deshalb bin ich ja so frustriert!
    Ich dachte, dass mein Code vielleicht irgendeinen Fehler hat....

    Gruß,
    Frank
     
  18. FelixL, 06.08.2010 #18
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    Es kann auch daran liegen wie du es befüllst (also wie du den EditText befüllst).
    Setz doch mal einen Anfangstext in der xml, und schau ob es dann geht.
     
  19. Nivel, 12.06.2011 #19
    Nivel

    Nivel Junior Mitglied

    Beiträge:
    44
    Erhaltene Danke:
    0
    Registriert seit:
    31.05.2011
    grab ja nur ungern Thread-Leichen aus, aber dieses Thema passt zu meinem jetzigen porblem und dafür wollte ich nicht extra ein neuen Thread eröffnen, ich hoffe ihr habt Verständnis dafür.

    Also, da ich frisch in die Android-Programmierung eingestiegen bin, hab ich davon nicht so viel Ahnung. Allerdings wollte ich mich an ner Art "Formelrechner" versuchen.
    habe EditText- Widgets erstellt, wo man ja text, in meinem fall eben zahlen eintippen soll.
    Jetzt möchte ich diese zahlen auslesen, sie in Variablen speichern und dann in eine Formel einsetzen um das dann auszurechnen.
    Aber wie gesagt habe ich keine Ahnung davon und wirklich schlau werde ich aus den Code-Beispielen nicht, bzw weiß nicht, wie ich das mit Zahlen machen soll.
    Am liebsten wären mir fertige Beispiele, wo ich mir den Aufbau mal angucken könnte.

    Vielen Dank schonmal;-)
    Nivel
     
  20. swordi, 12.06.2011 #20
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hast du jetzt probleme mit android selbst oder mit java??
     

Diese Seite empfehlen