2016-07-22 21 views
-1

Ich habe diesen Code auf meinem MainActivity.java gestartet:SharedPreferences wird zurückgesetzt, jedes Mal die App

SharedPreferences ids = getSharedPreferences(AddedIds, Context.MODE_PRIVATE); 
    SharedPrefernces.Editor editor = ids.edit(); 
    if (ids.getStringSet(AddedIds, id).isEmpty()) { 
     Set<String> id = new HashSet<String>(); 
     editor.putStringSet(AddedIds, id); 
     editor.apply(); 
    } 

Dieser Code wird überprüft, ob die Set<String> in der SharedPreferences bestehenden. Wenn nicht, fügt es die Set<String> zur SharedPreferences hinzu.

Das Problem ist, dass der Code immer aktiviert wird, wenn ich die App öffne, es existiert in der SharedPreferences.

+0

Was ist "AddedIds"? Ich lese Präferenzen immer durch die Aktivität (ich verwende nur eine) getActivity(). GetPreferences (Context.MODE_PRIVATE); und es funktioniert. –

+0

Verwenden Sie 'SharedPreferences.contains', bevor Sie einen Wert hinzufügen –

+1

Geben Sie anstelle eines Snippets eine [mcve] ein –

Antwort

0

sein Ich glaube, id die Zeichenfolge, die Sie in stringset suchen. Ändern Sie Ihren Code in unten.

Set<String> set = ids.getStringSet(AddedIds, null); 
    Boolean keyfound = false; 
    if (set != null){ 
     for (String key : set){ 
      if(key.equals(id)){ 
       keyfound = true; 
       break; 
      } 
     } 
     if(!keyfound){ 
      set.add(id); 
      editor.putStringSet(AddedIds, set); 
      editor.apply(); 
     } 
    } 
    else{ 
     set = new HashSet<String>(); 
     set.add(id); 
     editor.putStringSet(AddedIds, set); 
     editor.apply(); 
    } 
1

Was Ihr Code tut, ist, ob der in SharedPreferences gespeicherte Satz leer ist.

Was Sie wollen, ist die Verwendung contains method, die überprüft, ob ein Feld existiert. So sollte das

SharedPreferences ids = getSharedPreferences(AddedIds, Context.MODE_PRIVATE); 
SharedPrefernces.Editor editor = ids.edit(); 
if (!ids.contains(AddedIds)) { 
    Set<String> id = new HashSet<String>(); 
    editor.putStringSet(AddedIds, id); 
    editor.apply(); 
} 
+0

Es funktioniert jetzt ... – Ido

Verwandte Themen