2016-05-22 2 views
0

Я использую общие настройки для хранения int, который станет рекордом игры, которую я создал. Проблема в том, что он вообще не хранится. Когда я перезапускаю свое устройство/завершение работы приложения, или что-то еще не прошло. В чем проблема?Общие предпочтения не работают, как планировалось

магазин

SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE); 
SharedPreferences.Editor editor = sp.edit(); 
editor.putInt("your_int_key", highScore); 
editor.commit(); 

Получить

SharedPreferences sp1 = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE); 
int highScoreSaved = sp1.getInt("your_int_key", 0); 

дайте мне знать, если вы хотите, чтобы я добавить больше кода. Благодаря!

+0

Вы извлекаете данные в том же классе, где хранятся данные? –

ответ

0

Попробуйте использовать это при получении SharedPreference экземпляра:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this /* Current context */); 

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

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

SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("prefs_file", Context.MODE_PRIVATE); 

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

+1

Да, это работает. Я использовал ваш второй вариант, поскольку считаю, что это немного проще понять. Спасибо, это меня очень раздражало! –

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