1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. Mik, 05.03.2011 #1
    Mik

    Mik Threadstarter Neuer Benutzer

    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

    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!
     

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android zahlenformat auswählen

    ,
  2. android zahlentastatur komma

    ,
  3. java double punkt durch komma ersetzen

    ,
  4. android zahlenformat,
  5. android zahlen format