Deutsche Zahlenformate

M

Mik

Neues Mitglied
0
Hallo,

ich entwickle gerade eine kleine App, bei der eine Zahl eingegeben werden soll. Dann wird mit dieser Zahl ein bisschen gerechnet und dann schließlich das Ergebnis auf 2 Nachkommastellen gerundet ausgegeben. Das Problem ist jetzt das Zahlenformat.

Für das Eingabetextfeld habe ich die Eigenschaft
Code:
android:inputType  ="number|numberSigned|numberDecimal"
gesetzt, damit nicht die Buchstabentastatur sondern direkt die Zahlentastatur angezeigt wird. Hier schon das erste Problem: Auch mit deutschem Spracheinstellungen kann man kein Komma einfügen, nur einen Punkt.

Das Anzeigen des Ergebnisses habe ich so gemacht:

Code:
public java.text.DecimalFormat Df =  new java.text.DecimalFormat("0.00");
Anzeige.setText(Df.format(Ergebnis));
Komischerweise wird bei deutschen Spracheinstellungen das Ergebnis jetzt mit Komma statt mit Punkt ausgegeben!
Am Ende wird das Ergebnis gespeichert:

Code:
SharedPreferences settings = getSharedPreferences(Gespeichert,0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("Inhalt",Df.format(Ergebnis));
Das größte Problem besteht jetzt beim Laden. Denn wenn das Ergebnis eine ganze Zahl war, funktioniert das Laden. Wenn aber eine Kommazahl gespeichert wurde, stürzt die App ab. Ich vermute, dass das Konvertieren des Strings mit der Kommazahl (statt von Java erwartetem Punkt) in eine Double-Variable nicht funktioniert.
Hier noch der Code des Ladens:

Code:
SharedPreferences settings = getSharedPreferences(Gespeichert,0);
Ergebnis = Double.valueOf(settings.getString("Inhalt","0"));
Anzeige.setText(nf.format(Ergebnis));
Es wäre super, wenn ihr mir helfen könntet. Es braucht eigentlich nur für Deutsch zu funktionieren, d.h. Ein- und Ausgabe mit Komma. Perfekt wäre es natürlich variabel je nach Ländereinstellung.

Viele Grüße!
 
Falls jemand in Zukunft mal vor demselben Problem steht:

Ich habe mich jetzt damit beholfen, beim Laden nicht direkt den gespeicherten String (mit der Komma-Zahl) in Double zu konvertieren sondern erstmal das Komma durch einen Punkt zu ersetzen:

Code:
SharedPreferences settings = getSharedPreferences(Gespeichert,0);
Zwischenladestring = settings.getString("Inhalt","0");
Zwischenladestring = Zwischenladestring.replace(",",".");
Ergebnis= Double.valueOf(Zwischenladestring);
Anzeige.setText(nf.format(Ergebnis));
Weiterhin besteht das Problem, dass man Zahlen mit einem Punkt statt einem Komma eingeben muss. Natürlich wäre es ein leichtes, das Textfeld für alle Zeichen freizugeben und per Keylistener nur Zahlen und das Komma zuzulassen, allerdings würde sich dann immer erstmal die Buchstabentastatur öffnen, nicht die Tastatur mit den Zahlen und den Sonderzeichen. Jedesmal auf die Zahlentastatur umzuschalten ist aber IMO bei Eingabe vieler Zahlen hintereinander zu aufwendig. Für dieses Problem gibt es meiner ausführlichen Recherche :)winki:) nach zu urteilen, keine Lösung.
Bei meiner App wir der User jetzt Zahlen also mit Punkt eingeben und je nach Ländereinstellung mit Punkt oder Komma ausgegeben kriegen. Anders kriege ichs nicht hin.

Viele Grüße!
 

Ähnliche Themen

miustone
Antworten
2
Aufrufe
1.645
miustone
miustone
B
Antworten
0
Aufrufe
3.072
Bahni
B
1
Antworten
2
Aufrufe
828
TheDarkRose
TheDarkRose
Zurück
Oben Unten