Доступ к общим настройкам не работает правильно

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

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

1 ответ

Решение

Проблема добавленных значений не зафиксирована в общих настройках.

После добавления логического значения вы пропустили принятие изменений в общих настройках

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

 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)));
        }
Другие вопросы по тегам