Я пытаюсь использовать 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();
}
**Я знаю, что есть лучший способ сделать это, но я очень начинающий программист. Я попытался последовать совету другой темы
но везде, где я пытался поставить строки
protected AppPreferences appPrefs;
appPrefs = new AppPreferences(getApplicationContext());
Я получаю ошибку того или иного рода. Но самое главное, читая другие комментарии в потоке, люди говорят, что SharedPreferences автоматически распределяются между действиями в одном и том же пакете, и я думал, что именно так они и работают.