EditText -> eingabe in variable speichern

  • Antworten:32
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 50

01.03.2011, 18:40:22 via Website

Hey Leute,

also mein vorhaben ist es, eine Zahl, welche in ein EditText eingegeben wurde in einer Variable zu speichern. Die Variable wiederrum soll vom Typ int sein, weil ich damit rechnen muss.

Ich hab mein Buch durchsucht, nichts gefunden. Hab auch mal im Forum gesucht, hab leider nur ein Beitrag gefunden, aber nicht verstanden :(

Habt ihr ein einfaches und leicht verständliches beispiel parat? :)

Danke

LG Christian

Antworten
  • Forum-Beiträge: 1.544

01.03.2011, 18:43:37 via App

Hey,
1int i = Integer.valueOf(edittext.getText().toString());
Lg Ansgar
edit: Achtung, wenn der Text nicht in eine Zahl umgewandelt werden kann, fliegt ne Exception (=App stürzt ab). Deswegen am besten inputType im xml auf 'number' oder 'signednumber' stellen.

— geändert am 01.03.2011, 18:46:25

Antworten
  • Forum-Beiträge: 50

01.03.2011, 19:09:12 via Website

Hey,

danke für deine schnelle Antwort :)

Also ganz verkehrt lag ich mit dem Integer doch nicht :)

im moment sieht es bei mir so aus:
1a = Integer.valueOf(zahl1.getText().toString());

Und das steht in der methode onCreate
1zahl1 = findViewById(R.id.edt_firstfigure);

Allerdings bekomme ich eine Fehlermeldung:
Und zwar besagt die, das das getText() nicht definiert ist für View. Also habe ich getContext() genommen. Um zu schauen, ob es damit geht habe ich das geschrieben:
1a = Integer.valueOf(zahl1.getContext().toString());
2 ausgabe.setText("Die Zahl ist " + a);
3 setContentView(ausgabe);

und bekomme folgenden Fehler:
03-01 18:04:00.615: ERROR/AndroidRuntime(319): java.lang.NumberFormatException: unable to parse 'de.ChrisH.TabWidget.SongsActivity@44e9ee30' as integer

Also hat das mit dem Umwandeln in Integer und speichern doch nicht so geklappt. Dein Edit, habe ich berücksichtigt und beide Fehler mit number versehen.

Antworten
  • Forum-Beiträge: 117

01.03.2011, 19:19:44 via Website

Du musst die View zu einer EditText casten, dann sollte es funktionieren.

Mnemono - Efficient learning!

Antworten
  • Forum-Beiträge: 50

01.03.2011, 19:35:09 via Website

Ich kann dir gerade nicht ganz folgen.

Was casten ist weiß ich, auch wenn ich es noch nie genutzt habe.

Was genau soll ich von View in EditText casten?

View wäre ja nur zahl1 und das in ein EditText zu casten würde ja bedeuten ich brauch noch eine Variable -> mehr speicher wird benötigt.

Das würde da so aussehen:
1zahl3 = (TextView) zahl1;
2 a = Integer.valueOf(zahl3.getText().toString());
3 ausgabe.setText(a);
4 setContentView(ausgabe);

Achja und die Fehlermeldung so:
03-01 18:34:45.255: ERROR/AndroidRuntime(377): Uncaught handler: thread main exiting due to uncaught exception
03-01 18:34:45.285: ERROR/AndroidRuntime(377): android.content.res.Resources$NotFoundException: String resource ID #0x5
03-01 18:34:45.285: ERROR/AndroidRuntime(377): at android.content.res.Resources.getText(Resources.java:200)
...
...
....

Antworten
  • Forum-Beiträge: 1.727

01.03.2011, 19:47:56 via Website

Ein Context liefert aber keine Zahl!
Dein Fehler liegt hier:

setContentView(ausgabe);

Du musst die Ausgabe entsprechend in ein Ausgabe Textfeld schreiben nicht den ContentView setzten !

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
  • Forum-Beiträge: 50

01.03.2011, 20:17:51 via Website

Wenn Context nicht das liefert was ich will, habs mir gerade nochmal druchgelesen, dann ist es für mich ja auch uninteressant :)

Deswegen habe ich ja auch, siehe vorigem Post, zahl1 gecasted. Und dann mit zahl3 weitergearbeitet. Wo dann auch ein getText() funktioniert.

somit enthällt ja ausgabe eigentlich eine Zahl... und ich hab es geschaft eine ausgabe zu erhalten :D
1OnClickListener resultListener = new OnClickListener() {
2 public void onClick(View v) {
3 zahl3 = (TextView) zahl1;
4 a = Integer.valueOf(zahl3.getText().toString());
5 String text = String.valueOf(a);
6 ausgabe.setText(text);
7 }
Elegant würde ich sagen ist etwas anderes :D aber es Funktioniert erstmal. :) An alle Danke die mir geholfen haben.

Ich finde das mit dem casten etwas umständlich gibts da noch eine einfachere möglichkeit? also anstelle noch eine neue Variable zu verwenden (bezogen auf zahl3).

Antworten
  • Forum-Beiträge: 50

01.03.2011, 20:40:23 via Website

Herzlichen Dank :) werde ich später einbauen nun gibts erstmal zur feier des Tages was zu Essen :) der Euklidische Algorithmus Funktioniert :)

Danke nochmal an alle :)

Antworten
  • Forum-Beiträge: 3.256

18.04.2011, 14:03:03 via Website

So, ich klink mich hier mal ein:
Ich hab einen EditText und möchte die Zahl daraus in der Variable height speichern. Ich bekomms aber nicht hin.
In der Main.xml:
1<EditText android:id="@+id/inputheight"
2 android:layout_width="fill_parent"
3 android:layout_height="wrap_content"
4 android:hint="@string/height"
5 android:inputType="number">
6 </EditText>
Und hab in der Java Datei
1double height;
definiert. Was muss ich jetzt schreiben, dass die Zahl aus der EditText inputheight in die Variable height bekomme?

Danke schonmal
Ludwig

Antworten
  • Forum-Beiträge: 2.644

18.04.2011, 14:49:30 via Website

luhu
Danke! ich werde es später mal ausprobieren.
Müsste ja schon durch das "android:inputType="number" " abgefangen sein. ;)

sicher nicht

swordiApps Blog - Website

Antworten
  • Forum-Beiträge: 1.544

18.04.2011, 16:17:28 via App

Hm,
aber wenn ich bei mir input type auf "number" stelle, seh ich zwar + / etc, aber soe funktionieren nicht.. Vllt Copy&Paste? Ich probier's mal.
Bin bisher davon ausgegangen, dass mir das input type das sichert..
Lg Ansgar

Antworten
Gelöschter Account
  • Forum-Beiträge: 408

18.04.2011, 16:58:23 via Website

luhu
ah, Ok. und wie fragt man sowas dann ab? :)

Mit Hilfe eines try-catch-Blockes ;)

Wenn du in die Doc schaust siehst du, dass bei Fehlschlag der Funktion die Exception NumberFormatException geworfen wird.

Daher fängst du das ganze mit

1try {
2 height = Double.parseDouble(inputHeight.gettext());
3} catch (NumberFormatException ex) {
4 // Hier der Code, der dann ausgeführt werden soll
5}

ab.

Also volles Beispiel:

EditText in der layout.xml definiert mit der ID inputheight.
Dann in deiner Activity:

1EditText inputHeight = (EditText) findViewById(R.id.inputheight);
2try {
3 Double height = Double.parseDouble(inputHeight.gettext());
4} catch (NumberFormatException ex) {
5 // Fehlerbehandlung (Ausgabe an den User oder sowas)
6}

Gruß Oli - Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst! - Follow me on Twitter - AndroitPIT-Regeln

Antworten
  • Forum-Beiträge: 3.256

18.04.2011, 19:30:06 via Website

Rafael K.
So aus dem Kopf

1height = Double.parseDouble( ((EditText)findViewById( R.id.inputheight )).getText() );

Das schmeisst aber eine NumberFormatException, wenn der Text keine gültige Zahl ist.
Das musst du dann abfangen.

So, hab das jetzt mal ausprobiert. Bekomme aber links in Eclipse die Fehlermeldung "EditText cannot be resolved to a type", wenn ich dann auf den Lösungsvorschlag "Rename in file" anklicke, passiert aber nix...
Wär nochmal für ein bisschen Hilfe sehr dankbar :)

lg
Ludwig

Antworten

Empfohlene Artikel