Problem beim Berechnen im Code

  • Antworten:11
  • Bentwortet
Aufschlussreich
  • Forum-Beiträge: 24

24.02.2014, 17:58:43 via Website

Hallo liebe Runde,

also ich habe hier mal die Forum Suche genommen, aber kein Ergebniss gefunden, kann aber auch sein das ich einfach mit dem falschen Begriff gesucht habe. Also ich entwickel zurzeit für einen Juwelier Kunden eine App die den Grammkurs genau berechnen soll. Eigentlich eine sehr sinnlose App in meinen Augen ^^ Aber was der Kunde wünscht soll er kriegen ^^ Nun habe ich aber ein Problem im Code anscheinend ^^ Vielleicht kann mir ja einer helfen ^^

1public void berechnekurs (View view) {
2
3 double money;
4 double grammi;
5 double Ergebniss;
6
7 EditText summe = (EditText) findViewById(R.id.summenangabe);
8 EditText gramm = (EditText) findViewById(R.id.grammangabe);
9 EditText ergeb = (EditText) findViewById(R.id.ergebniss);
10
11 money = Double.parseDouble(summe.getText().toString());
12 if (summe.getText().toString().length() == 0){
13 return;
14 }
15 grammi = Double.parseDouble(gramm.getText().toString());
16 if (gramm.getText().toString().length() == 0){
17 return;
18 }
19 Ergebniss = money / grammi;
20
21 ergeb.setText(Ergebniss);
22
23 }

Hier bekomme ich im Bereich
1ergeb.setText(Ergebniss);
Die Fehlermeldung "Can not resolve setText(double); ! Warum ? Und wie löse ich das ? oO

Antworten
impjor
  • Forum-Beiträge: 1.793

24.02.2014, 18:01:33 via Website

Bitte Variabeln immer klein schreiben!

Das Problem liegt darin, dass TextView die Methode setText(double) nicht anbietet. Du musst diesen in einen String casten:
  • String.valueOf(double)
  • ""+double
  • Double.toString(double)

Dann kannst du TextView#setText(String) benutzen.

LG


PS: Hier noch ein Link, warum Eclipse/Android Studio bei int Werten nicht meckert, aber die App am Ende abstürzt: https://www.nextpit.de/de/android/forum/thread/591363/setText-Text-geht-aber-Variable-nicht#p1915697

— geändert am 24.02.2014, 18:03:05

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Aufschlussreich

Antworten
Aufschlussreich
  • Forum-Beiträge: 24

24.02.2014, 19:18:21 via Website

Also wenn ich es nun richtig verstehe ist die Angabe dann in der Form
1ergeb.setText(String.valueOf(ergebniss), TextView.BufferType.valueOf(Double.toString(ergebniss)));
richtig ? ^^ So bekomme ich auf jedenfall keine Fehleranzeige ^^ Getestet habe ich es wiederum noch nicht ob es so geht daher gerade mein Emulator spinnt :) Vermute aber es wird zu einem Crash führen weil ich es nicht richtig verstanden habe ^^

Daher du dich ja anscheinend mehr auskennst als ich auf jedenfall ^^ Hast du einen Link wo ich Informationen sehe wie ich meine App deinstallieren kann ? Also ich meine damit das ich in der App selber ein Deinstallieren Button anbiete ^^ ?

— geändert am 24.02.2014, 19:35:21

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

24.02.2014, 19:32:10 via Website

Man braucht doch keinen deininstallieren Button. Android regelt das selbst, im Anwendungsmanager.
Was hat das überhaupt für einen Sinn. Ein user soll dich deine App nicht einfach deinsinstallieren

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

Antworten
Aufschlussreich
  • Forum-Beiträge: 24

24.02.2014, 19:37:02 via Website

Lieber Pascal also ich hätte natürlich gerne eine Antwort auf das andere Thema anstatt hier eine Diskussion zu entbrennen. Aber um es dir zu beantworten. Diese Information möchte ich rein haben um alle Bereiche von Android kennen zu lernen und ich lange schon nach solchen System bezogenen Informationen suche, daher sie meine Bücher nicht liefern :)

— geändert am 24.02.2014, 19:37:59

Antworten
Aufschlussreich
  • Forum-Beiträge: 24

24.02.2014, 19:44:19 via Website

Pascal P.
Wenn du die Antwort nicht weisst, dann googelt man erst bevor man fragt.
Nach 2 min hat man dann so was ********

Also jaaa ^^ Das habe ich gefunden und auch mehr :D Ich rede eher von Dokumentationen zu diesem Bereich, die man dan auch vielleicht als Buch bestellen kann ^^ Daher ich diese magischen User kenne, die einen immer zu Google zwingen wollen :D Nutze ich es vorher schon immer :) Es sind halt nicht gerade ausführliche INformationen die manche Seiten von Google Suche geben ^^ Aber danke für deine Mühe :)

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

24.02.2014, 19:49:47 via Website

Also die Gesamte Android ApiDoc ist auf http://developer.android.com/index.html abrufbar.
Dort sind auch die einzelnen Klassen etc. Dokumentiert.
Allerdings gibt es dort nicht zu jedem Thema Beispiele.

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

Antworten
Aufschlussreich
  • Forum-Beiträge: 24

24.02.2014, 19:54:45 via Website

Superrr ^^ Das habe ich gesucht ^^ Danke für den Link :) Ich lerne halt schon seit 4 Monaten an den Büchern und irgendwie werden nie gute Links genannt in den Büchern die ich habe :D

Zum obigen Problem muss ich nach dem ich den Code nun so geänder habe sagen, das es ein Crash gibt, wie ich geahnt habe und somit ich das wohl falsch verstanden habe ^^ Würde mich freuen wenn ihr es mir ein bisschen genauer erklärt :) Ich bin zwar schon recht gut in Java aber ich muss ehrlich sagen das ich selten mit Zahlen arbeite und somit diese Probleme mich ein wenig wuppen :D

Antworten
impjor
  • Forum-Beiträge: 1.793

24.02.2014, 20:02:13 via App

Aufschlussreich
Also wenn ich es nun richtig verstehe ist die Angabe dann in der Form
1ergeb.setText(String.valueOf(ergebniss), TextView.BufferType.valueOf(Double.toString(ergebniss)));
richtig ?
Warum so kompliziert? So hätte es auch völlig gereicht:
1ergeb.setText(String.valueOf(ergebniss));

Bei Abstürzen immer LogCat posten.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

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

24.02.2014, 20:02:59 via Website

Deine Erklärung:
Du hast eine Fließkommazahl n vom Typ double oder float, mit dieser Rechnest du irgendwas. Ich nehme mal n*3.
Wenn du dieses Ergebnis nun als Text in einer TextView darstellen willst, musst du deine Zahl erst in den Typ String umwandeln, da sie bis jetzt noch als Fließkommazahl vom Typ double oder float ist. Dies geschieht mit Double.toString(double) oder mit String.valueOf(double). Beide Funktionen wandeln dir deine Zahl in deinen String (=Text mit dem nicht gerechnet werden kann) um.
Dies muss passieren, da die Funktion TextView#setText nur eine Übergabe von Variablen des Typs String erlaubt.
Somit wäre die Richtige Syntax für das Setzen deiner Zahl in deine TextView:
1ergeb.setText(String.valueOf(double));

LG

Pascal

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

Antworten
Aufschlussreich
  • Forum-Beiträge: 24

24.02.2014, 20:49:22 via Website

Also erstmal danke an euch für die gute Hilfe :) Für die Umständlichkeit wurde ich bestraft in dem Sinne das dadurch der Fehler kam ^^ Nun durch das leichte darstellen mit

1ergeb.setText(String.valueOf(ergebniss));

hat es nun funktioniert :) Ich danke von Herzen das ihr es mir erklärt habt damit ich es besser verstehe :)

Antworten