2016-04-26 11 views
0

Nachdem ich "gerettet" einen String es (in meinem Fall) zurückkehren wird "Fehler": html_value1 ist "" nichtAndroid Java Sharedpreferences keine Daten speichern

MainActivity:

tools.getEditor(tools.getPreferences(getApplicationContext())).putString("wochea9a", html_value1); 
tools.getEditor(tools.getPreferences(getApplicationContext())).putString("wocheb9a", html_value2); 
tools.getEditor(tools.getPreferences(getApplicationContext())).commit(); 

Alarmserviceactivity:

savedwochea9a = tools.getPreferences(getApplicationContext()).getString("wochea9a", "error"); 
     savedwocheb9a = tools.getPreferences(getApplicationContext()).getString("wocheb9a", "error"); 

Werkzeuge:

public class tools { 


    static SharedPreferences preferences; 
    static SharedPreferences.Editor editor; 




    public static SharedPreferences getPreferences(Context context){ 
     preferences = PreferenceManager.getDefaultSharedPreferences(context); 
     return preferences; 
    } 
    public static SharedPreferences.Editor getEditor(SharedPreferences preferences){ 
     editor = preferences.edit(); 

     return editor; 
    } 
... 

Wie ich dieses Problem beheben?

Antwort

3

Jedes Mal, wenn Sie einen Editor erstellen (mit edit()), müssen Sie entweder commit() oder apply() aufrufen, damit die Ergebnisse gespeichert werden.

Also, sollten Sie den Code wie folgt aussehen:

MainActivity:

tools.getEditor(tools.getPreferences(getApplicationContext())) 
    .putString("wochea9a", html_value1) 
    .putString("wocheb9a", html_value2) 
    .commit(); // or .apply(); 

Noch besser, wenn Sie apply() verwenden. Diese Methode kehrt sofort zurück und speichert die Daten im Hintergrund, ohne den Thread zu blockieren.