Класс хранения настроек

  1. public class Prefs {
  2.  
  3.     private static final String HISCORE = "hiscore";
  4.     private static final String USERNAME = "username";
  5.  
  6.     private static Prefs sInstance;
  7.  
  8.     public static synchronized Prefs with(Context ctx) {
  9.         if (sInstance == null) {
  10.             sInstance = new Prefs(ctx.getSharedPreferences("game", Context.MODE_PRIVATE));
  11.         }
  12.         return sInstance;
  13.     }
  14.  
  15.     private final SharedPreferences mPref;
  16.     private final Prefs.Editor mPrefsEditor;
  17.  
  18.     private Prefs(SharedPreferences pref) {
  19.         mPref = pref;
  20.         mPrefsEditor = new Editor();
  21.     }
  22.  
  23.     public int getHiScore() {
  24.         return mPref.getInt(HISCORE, 0);
  25.     }
  26.  
  27.     public String getUsername() {
  28.         return mPref.getString(USERNAME, "anonymous");
  29.     }
  30.  
  31.     public Editor edit() {
  32.         return mPrefsEditor;
  33.     }
  34.  
  35.     public class Editor {
  36.  
  37.         private final SharedPreferences.Editor mEditor;
  38.  
  39.         private Editor() {
  40.             mEditor = mPref.edit();
  41.         }
  42.  
  43.         public Editor setHiScore(int score) {
  44.             mEditor.putInt(HISCORE, score);
  45.             return this;
  46.         }
  47.  
  48.         public Editor setUsername(String username) {
  49.             mEditor.putString(USERNAME, username);
  50.             return this;
  51.         }
  52.  
  53.         public void apply() {
  54.             mEditor.apply();
  55.         }
  56.     }
  57. }
Для хранения настроек удобно создать один класс, с которым потом можно работать из любой точки приложения.

Загрузка:
  1. String user = Prefs.with(getContext()).getUsername();
  2. // Или
  3. Prefs prefs = Prefs.with(getContext());
  4. int score = prefs.getHiScore();
  5. String user = prefs.getUsername();

Сохранение:
  1. Prefs.with(getContext()).edit()
  2.     .setHiScore(100500)
  3.     .setUsername("Helltar")
  4.     .apply();

:ps: Модификатор synchronized можно убрать, если приложение не многопоточное.

Реклама

Мы в соцсетях

tw tg yt gt