SharedPreferences не будут передаваться между действиями

Я пытаюсь использовать SharedPreferences для сохранения настроек. Но я не могу получить данные, которые будут разделены между любым из моих действий.Код, который я использую, позволяет сохранять настройки, но у каждого действия, похоже, есть собственная версия каждой переменной.

Так например. У меня есть действие настроек звука, в котором пользователь может указать значение переменной «musicVolume», которая сохраняется. Если я закрываю игру и перезагружаю ее, то активность настроек звука «запоминает» значение. Но если я попытаюсь загрузить значение в любую другую деятельность, это не сработает. Но все они могут загружать и сохранять свои собственные переменные с тем же именем.

Это методы, которые я использую для сохранения переменных. В каждом действии есть копия каждого из этих методов.**

Как я уже сказал, они работают, но они могут только читать и записывать данные для отдельной активности, в которой они находятся.

public void SavePreferences(String key, float value) {
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putFloat(key, value);
        editor.commit();
}

public void LoadPreferences() {
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        musicVolume = sharedPreferences.getFloat("musicVolume", (float)0.123);
        soundEffectsVolume = sharedPreferences
                       .getFloat("soundEffectsVolume", (float)0.123);
}

public void ClearPreferences() {
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.clear();
        editor.commit();
}

**Я знаю, что есть лучший способ сделать это, но я очень начинающий программист. Я попытался последовать совету другой темы

Общие настройки Android

но везде, где я пытался поставить строки

protected AppPreferences appPrefs;
appPrefs = new AppPreferences(getApplicationContext());

Я получаю ошибку того или иного рода. Но самое главное, читая другие комментарии в потоке, люди говорят, что SharedPreferences автоматически распределяются между действиями в одном и том же пакете, и я думал, что именно так они и работают.

19
задан Community 23 May 2017 в 11:54
поделиться