Сбросить значение из sharedPreferences - PullRequest
0 голосов
/ 03 ноября 2018

В моем приложении много классов, и я сохраняю счет по отдельности в sharePref. Каждый класс имеет свой собственный sharePref. В конце я создал класс, который суммирует все эти sharePref в целое число с именем totalscore, что-то вроде этого https://gyazo.com/3f0f9da2c64e587dd6244cf3933f957c. В конечном итоге это работает.

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

Спасибо за ваше время и извините за мой английский.

1 Ответ

0 голосов
/ 04 ноября 2018

Обычно я управляю sharedPreferences в своих проектах так: я создаю класс с именем AppPreferences, а затем создаю в нем методы getters и setters для чтения и записи некоторых предпочтений. Это помогает мне управлять всеми предпочтениями, а также все пользовательские настройки находятся в одном месте.

import android.content.Context;
import android.content.SharedPreferences;

public class AppPreferences {
 private static AppPreferences mAppPreferences;
 protected Context mContext;
 private SharedPreferences mSharedPreferences;
 private SharedPreferences.Editor mSharedPreferencesEditor;

 private AppPreferences(Context context) {
  mContext = context;
  mSharedPreferences = context.getSharedPreferences("AppPreferences", Context.MODE_PRIVATE);
  mSharedPreferencesEditor = mSharedPreferences.edit();
 }

 /**
  * Creates single instance of AppPreferences
  *
  * @param context - context of Activity or Service
  * @return Returns instance of Class AppPreferences
  */
 public static synchronized AppPreferences getInstance(Context context) {

  if (mAppPreferences == null) {
   mAppPreferences = new AppPreferences(context.getApplicationContext());
  }
  return mAppPreferences;
 }

 /**
  * Stores String value in preference
  *
  * @param key - key of preference
  * @param value - value for that key
  */
 public void setValue(String key, String value) {
  mSharedPreferencesEditor.putString(key, value);
  mSharedPreferencesEditor.commit();
 }

 /**
  * Stores int value in preference
  *
  * @param key - key of preference
  * @param value - value for that key
  */
 public void setValue(String key, int value) {
  mSharedPreferencesEditor.putInt(key, value);
  mSharedPreferencesEditor.commit();
 }

 /**
  * Stores Double value in String format in preference
  *
  * @param key - key of preference
  * @param value - value for that key
  */
 public void setValue(String key, double value) {
  setValue(key, Double.toString(value));
 }

 /**
  * Stores long value in preference
  *
  * @param key - key of preference
  * @param value - value for that key
  */
 public void setValue(String key, long value) {
  mSharedPreferencesEditor.putLong(key, value);
  mSharedPreferencesEditor.commit();
 }

 /**
  * Stores boolean value in preference
  *
  * @param key - key of preference
  * @param value - value for that key
  */
 public void setValue(String key, boolean value) {
  mSharedPreferencesEditor.putBoolean(key, value);
  mSharedPreferencesEditor.commit();
 }

 /**
  * Retrieves String value from preference
  *
  * @param key - key of preference
  * @param defaultValue - default value if no key found
  */
 public String getStringValue(String key, String defaultValue) {
  return mSharedPreferences.getString(key, defaultValue);
 }

 /**
  * Retrieves int value from preference
  *
  * @param key - key of preference
  * @param defaultValue - default value if no key found
  */
 public int getIntValue(String key, int defaultValue) {
  return mSharedPreferences.getInt(key, defaultValue);
 }

 /**
  * Retrieves long value from preference
  *
  * @param key - key of preference
  * @param defaultValue - default value if no key found
  */
 public long getLongValue(String key, long defaultValue) {
  return mSharedPreferences.getLong(key, defaultValue);
 }

 /**
  * Retrieves boolean value from preference
  *
  * @param keyFlag - key of preference
  * @param defaultValue default value if no key found
  */
 public boolean getBoolanValue(String keyFlag, boolean defaultValue) {
  return mSharedPreferences.getBoolean(keyFlag, defaultValue);
 }

 /**
  * Removes key from preference
  *
  * @param key - key of preference that is to be deleted
  */
 public void removeKey(String key) {
  if (mSharedPreferencesEditor != null) {
   mSharedPreferencesEditor.remove(key);
   mSharedPreferencesEditor.commit();
  }
 }


 /**
  * Clears all the preferences stored
  */
 public void clear() {
  mSharedPreferencesEditor.clear().commit();
 }
}

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

ПОБОЧНОЕ ПРИМЕЧАНИЕ: Создайте файл Constants.java в своем проекте и добавьте в него все ключи и статические переменные, чтобы вам не приходилось беспокоиться о написании ключей и обо всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...