2013-04-24 2 views
26

Я пытаюсь в течение последнего часа сохранить целое число в приложении для Android. Я читал, что это можно сделать с помощью SharedPreferences. Однако я не понимаю, почему это кажется настолько запутанным.Android SharedPreferences, как сохранить простую переменную int

Как я могу просто сохранить переменную int? И затем, когда я запустил приложение снова, как я могу снова взаимодействовать с этой переменной?

+0

** Упрощенный подход ** был бы с использованием этой библиотеки: http://github.com/viralypatel/Android -SharedPreferences-Helper ... расширенные технические детали в моем [здесь] (http://stackoverflow.com/a/35232248/1957401) ... – AndroidMechanic

+0

Проверьте это http://www.gadgetsaint.com/go/ xb023 – ASP

ответ

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

вы можете получить его как:

SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE); 
int myIntValue = sp.getInt("your_int_key", -1); 

Интерфейс SharedPreference дает вам доступ к файлу XML и простой способ изменить его через редактор. Файл хранится в /data/data/com.your.package/shared_prefs/, и вы можете получить к нему доступ onlu через этот SharedPreference API

+2

Хм вы можете поместить некоторые комментарии, чтобы понять, что происходит там, потому что я не понимаю пример? Какая переменная? Что такое «your_prefs». Что находится рядом с ним. Что такое «your_int_key» – donparalias

+1

На самом деле вам также необходимо предоставить значение по умолчанию 'getInt', которое возвращается, когда' int' с ключом 'your_int_key' не может быть найден. Что-то вроде этого: 'int myIntValue = sp.getInt (" your_int_key ", -1);' где -1 - значение по умолчанию. – zbr

+2

Я предполагаю, что 'clearNotificationsSP' в первом примере должен быть просто' sp', правильно? – Scorchio

6

Это пример настройки булевых настроек. Вы также можете пойти с Integer.

SharedPreferences prefs = PreferenceManager 
        .getDefaultSharedPreferences(this); 
      if (!prefs.getBoolean("firstTime", false)) { 

       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putBoolean("firstTime", true); 
       editor.commit(); 
      } 

Надеюсь, это было бы полезно.

10
public void SaveInt(String key, int value){ 
     sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putInt(key, value); 
     editor.commit(); 
} 
public void LoadInt(){ 
     sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     savedValue = sharedPreferences.getInt("key", 0); 
} 

Если вы хотите сохранить переменную где-то, вам нужно написать SaveInt («key», 5); При этом вы сохраните значение 5, а первое значение по умолчанию - 0. Если вы хотите загрузить его и использовать в другом действии, вы должны написать оба этих метода и вызвать LoadInt(); где вам нужна переменная. Сохраненное значение Value является предопределенным целым числом (это нужно объявлять везде, где вы хотели бы использовать сохраненную переменную).

+0

https://gist.github.com/john1jan/b8cb536ca51a0b2aa1da4e81566869c4 – John

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