2016-07-22 9 views
-1

を開始するたびにリセットされている:Set<String>SharedPreferencesに存在されているかどうかSharedPreferencesは、私は私のMainActivity.javaにこのコードを持っているアプリが

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(); 
    } 

このコードをチェックしています。そうでない場合、それはSharedPreferencesからSet<String>を追加します。

問題は、私はアプリを開くたびに、それがSharedPreferencesに存在althroughコードは、活性化されていることです。あなたのコードは何

+0

「AddedIds」とは。私はいつもgetActivity()getPreferences(Context.MODE_PRIVATE)(私は一つだけを使用しています)の活動を通じて環境設定を読んで。それは動作します。値 –

+0

使っ 'SharedPreferences.contains' [MCVE]の代わりにスニペットの –

+1

を追加する前に –

答えて

0

私はidがあなたがstringsetで検索している文字列だと思う。コードを下に変更してください。

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

SharedPreferencesに保存されたセットが空の場合にチェックしています。

は何が欲しいのフィールドが存在するかどうかをチェックするcontains methodを使用することです。だからそうでなければならない

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

です... – Ido

関連する問題