2016-01-07 2 views
0

У меня есть этот кусок кода, который хранит «переключатель» для определенного элемента в списке. Я использую имя элемента в качестве ключа. Однако результат getBoolean всегда возвращает значение по умолчанию, указанное во втором параметре. Я не могу понять, не выполнил ли я это неправильно, или я что-то не замечаю
Для пояснения, summonerNames является архаистом Strings.Доступ к общим настройкам не работает правильно

 MenuItem toggle = menu.findItem(R.id.postGameNotif); 
     SharedPreferences prefs = getApplicationContext().getSharedPreferences("summoner_prefs", MODE_PRIVATE); 
     SharedPreferences.Editor editor = prefs.edit(); 
     Log.i(TAG, summonerNames.get(position)); 
     boolean postNotif = prefs.getBoolean(summonerNames.get(position),false); 
     if (postNotif == true) { 
      toggle.setTitle("Disable post-game notifications"); 
      Log.i(TAG,"Disabled"); 
      editor.putBoolean(summonerNames.get(position), false); 
     } 
     else { 
      toggle.setTitle("Enable post-game notifications"); 
      Log.i(TAG, "Enabled"); 
      editor.putBoolean(summonerNames.get(position), true); 
      Log.i(TAG, String.valueOf(prefs.getBoolean(summonerNames.get(position),false))); 
     } 
+0

Вы забыли 'совершить()' –

+0

Добавить editor.commit() и editor.apply() в отражают изменения в ваших общих привилегиях. –

ответ

2

Неисправность добавленных значений не используется в общих предпочтениях.

После addedin логическое значение, которое вы пропустили совершить изменения в sharedpreference

this Проверить ссылку

MenuItem toggle = menu.findItem(R.id.postGameNotif); 
     SharedPreferences prefs = getApplicationContext().getSharedPreferences("summoner_prefs", MODE_PRIVATE); 
     SharedPreferences.Editor editor = prefs.edit(); 
     Log.i(TAG, summonerNames.get(position)); 
     boolean postNotif = prefs.getBoolean(summonerNames.get(position),false); 
     if (postNotif == true) { 
      toggle.setTitle("Disable post-game notifications"); 
      Log.i(TAG,"Disabled"); 
      editor.putBoolean(summonerNames.get(position), false); 
editor.commit()// you need to commit after adding it to sharedpref 
     } 
     else { 
      toggle.setTitle("Enable post-game notifications"); 
      Log.i(TAG, "Enabled"); 
      editor.putBoolean(summonerNames.get(position), true); 
editor.commit()// you need to commit after adding it to sharedpref 
      Log.i(TAG, String.valueOf(prefs.getBoolean(summonerNames.get(position),false))); 
     } 
+1

О, боже, как я это забыл. Спасибо –

+0

@BrianLe просто предложение использовать эту библиотеку для sharedpreference https://github.com/scottyab/secure-preferences https://github.com/Pixplicity/EasyPreferences – user1140237

Смежные вопросы