2016-06-22 8 views
1

Ich verwende den folgenden Helfer Benutzereingaben sharedpreference zu speichern:holen ganzzahligen Wert von sharedpreference

protected void storeData(SharedPreferences.Editor editor, 
          String key, EditText et) { 
     String content = et.getText().toString(); 
     if ("".equals(content)||" ".equals(content)) { 
      editor.remove(key); 
     } else { 
      editor.putString(key, content); 
     } 
    } 

dann

number1 = (EditText)findViewById(R.id.number1); 
SharedPreferences sharedPreferences = getSharedPreferences("Database", Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPreferences.edit(); 

storeData(editor,"number1", number1); 
editor.commit(); 

Ich möchte fragen, ob, wie kann ich diesen Wert als ganze Zahl abrufen, dann benutze es für eine Berechnung. ich gesucht und gefunden this, gefunden, dass sie editor.putInt(key,content); verwenden

Aber ist das möglich, den Wert als ganze Zahl gerade von meiner Methode zu extrahieren? danke.

+0

umm, 'SharedPreferences.getInt (...)'? –

+0

Ich habe es versucht, aber es funktioniert nicht .. – GentleG

+0

Ziemlich sicher, es funktioniert, sonst ist das Android SDK defekt. Wir haben keine Ahnung, was Ihre 'storeData()' Methode tut. Sie zeigen auch, wie Sie versuchen, es zu bekommen. –

Antwort

1

Ihre storeData() Methode legt eine Zeichenfolge fest (putString()). Geteilte Präferenzen speichern typisierte Werte, die sich deutlich unterscheiden. Das heißt, Sie können "1" nicht als String verwenden, sondern später als Integer.

Sie müssen put/getInt() konsistent verwenden. Alternativ könntest du es als String speichern und es wieder konsistent als String erhalten und es zu einem int zwingen, wie du es brauchst.

1

Sie sollten wirklich putInt() verwenden, aber Sie können auch Integer.parseInt("some string") verwenden, um Ihren String-Wert in eine ganze Zahl zu konvertieren.

+0

wie der Wert aus sharepreference abgerufen und mit integer.parseInt verknüpft wird ? – GentleG

1

Verwenden editor.commit() innerhalb des anderen Teils

Ein Vorschlag: Verwendung editor.apply() anstelle von editor.commit() als commit übernimmt die Aufgabe im Vordergrund anwenden während Griffe, die asynchron.

+0

Ich habe es versucht, zusammen mit SharedPreferences.getInt (...), aber es wird nicht so gut funktionieren .. – GentleG

+0

SharedPreferences nicht direkt verwenden. Verwenden Sie wie das Bearbeiten der Objektzuteilung. https://developer.android.com/reference/android/content/SharedPreferences.html – Uvneshkumar