Android Programmieren Addieren einer Eingabe und einem TextView

  • Antworten:13
Nils 0501
  • Forum-Beiträge: 6

11.10.2015, 22:51:52 via Website

Guten Abend,
Ich tue mich grad schwer bei einer eigentlich ganz einfachen sache vielleicht kann mir hier jemand einen Denkanstoß geben.

Ich möchte gern eine Art Kassen-App schreiben. Sie soll ganz einfach den Wert aus einem EditText in einem TextView ausgeben. Der Wert wird auch korrekt ausgegeben, er soll jedoch addiert werden und ich weiß nicht wie ich das angehen soll.
hier der Code:

kasseEinnahme.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

               String  Betrag = edittextBetrag.getText().toString();

                textviewKassenbestand.setText(Betrag + "€");

                Toast.makeText(getApplicationContext(), "Gebucht!",
                        Toast.LENGTH_SHORT).show();


            }

Ich hoffe auf schnelle Hilfe. Vielen Dank im Vorraus.

— geändert am 11.10.2015, 23:01:32

Antworten
Andy N.
  • Forum-Beiträge: 22.375

11.10.2015, 22:58:25 via Website

Hallo Nils

herzlich willkommen bei uns im Forum :)

Bitte beachte, dass Threads mit nicht aussagekräftigem Titel bei uns üblicherweise den Regeln entsprechend entfernt werden. Ich bitte dich daher, deinen Threadtitel innerhalb der nächsten 24 Stunden, spätestens jedoch bei deinem nächsten Besuch noch etwas aussagekräftiger zu gestalten (Hierfür einfach unter deinem ersten Beitrag auf 'bearbeiten' klicken, dann kannst du oben noch mal den Titel anpassen)

Danke :)

Viele Grüße,
Andy


OnePlus 3 (Resurrection Remix 5.8.2)
LG G Watch

Regeln | unsere Mods & Admins

Nils 0501

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

11.10.2015, 23:01:13 via App

.getText().toString()? Irgendwie doppelt, gell? ;)


Wo soll denn in dem Code was addiert werden? Ich sehe nix....

— geändert am 11.10.2015, 23:03:08

if all else fails, read the instructions.

Antworten
Nils 0501
  • Forum-Beiträge: 6

11.10.2015, 23:06:13 via Website

Ich frag mich einfach wie ich das anstellen kann.

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

11.10.2015, 23:21:09 via App

Wenn du mit den Eingaben rechnen willst, musst du die Strings in numerische Variablen rein bringen/konvertieren., dann kannst du damit rechnen.

if all else fails, read the instructions.

Nils 0501

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

11.10.2015, 23:57:11 via App

Klaus T.

.getText().toString()? Irgendwie doppelt, gell? ;)

Das ist nicht ganz Korrekt :P
gerText() gibt ein Editable Objekt zurück, wenn man dann nur den String haben will macht man ein toString dahinter ;)

LG Pascal //It's not a bug, it's a feature. :) ;)

Nils 0501

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

12.10.2015, 05:28:12 via App

Pascal P.

getText() gibt ein Editable Objekt zurück, wenn man dann nur den String haben will macht man ein toString dahinter ;)

Aah...Ok, danke. Ich habe nur Swing, SWT etc im Kopf....
Vllt sollte ich auch endlich mal eine App programmieren :D

if all else fails, read the instructions.

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

12.10.2015, 07:31:29 via App

Bin nicht sicher ob ich deine Frage richtig verstanden habe. Aber wenn jetzt zum Beispiel 5€ im textview steht und nochmal auf den Button geklickt wird, während zb 3 im edittext stehen soll dann 8€ im textview stehen?
Ich denke du kannst dir einfach eine int variable machen in der der aktuelle Gesamtbetrag steht und bei jedem Klick addierst du den neuen wert. Gibt es nicht Integer.parseInt(string) zum casten? Also etwa:
int_gesamt += Integer.parseInt(Betrag);
Dann kannst du auch diese variable im textview +"€" ausgeben.

— geändert am 12.10.2015, 07:34:18

Nils 0501

Antworten
Nils 0501
  • Forum-Beiträge: 6

14.10.2015, 21:39:55 via Website

Ich habe das jetzt so versucht zu lösen. Es funktioniert auch annähernd so wie ich es gerne haben möchte.

kasseEinnahme.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

                double Betrag = Double.valueOf(edittextBetrag.getText().toString());
                double Bestand = Double.valueOf(textviewKassenbestand.getText().toString());
                double EndBetrag = Bestand + Betrag;

                textviewKassenbestand.setText(EndBetrag + "€");

                Toast.makeText(getApplicationContext(),"Vorgang Gebucht!",
                        Toast.LENGTH_SHORT).show();

            }

        });

Das problem ist jedoch das die erste Eingabe wunderbar funktioniert. Gebe ich z.B jetzt 1.52€ ein werden diese in dem Textview angezeigt. Beim zweiten betätigen des Buttons jedoch stürzt das Programm ab. Könnte mir da nochmal jemand helfen?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

14.10.2015, 22:32:48 via App

Was sagt denn LogCat?

LG Pascal //It's not a bug, it's a feature. :) ;)

Nils 0501

Antworten
Nils 0501
  • Forum-Beiträge: 6

14.10.2015, 23:25:35 via Website

Process: MEIN APPNAME, PID: 13395
java.lang.NumberFormatException: Invalid double: ""
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseDouble(StringToReal.java:248)
at java.lang.Double.parseDouble(Double.java:295)
at java.lang.Double.valueOf(Double.java:332)
at APPNAME.gfhome$1.onClick(gfhome.java:78)
at android.view.View.performClick(View.java:4633)
at android.view.View$PerformClick.run(View.java:19330)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)

— geändert am 14.10.2015, 23:26:19

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

15.10.2015, 00:33:08 via App

Der Eingabestring wird nicht als Double erkann btw ist leer. Da stimmt was mit dem inhalt der textfelder nicht. Mach am besten ein Exceltion handling drum

LG Pascal //It's not a bug, it's a feature. :) ;)

Nils 0501

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

15.10.2015, 11:10:19 via Website

Ich denke, dass es für den User am intuitivsten wäre, wenn man das Eingabefeld so konfiguriert, dass nur Dezimalzahlen eingegeben werden können (das geht im XML, habe Link zur Doku grade nicht zur Hand).
Ggf. dann noch dafür sorgen, dass das Textfeld nicht "leer" werden kann, sondern 0 als Inhalt hat, wenn alle Ziffern (z.B. per DEL) gelöscht werden.

Aktuelles Entwicklungsprojekt: (thinking) Sudoku Dojo Free (lightbulb)
Ich freue mich über Tester/innen.

Antworten