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

Deutsche Zahlenformate

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Mik, 05.03.2011.

  1. Mik, 05.03.2011 #1
    Mik

    Mik Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    05.03.2011
    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!
     
  2. Mik, 06.03.2011 #2
    Mik

    Mik Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    05.03.2011
    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!
     

Diese Seite empfehlen