从sharedPreferences重置值

时间:2018-11-03 06:25:48

标签: save sharedpreferences setvalue

我的应用程序有很多类,我将分数分别保存到sharePref中。每个类都有自己的sharePref。最后我制作了一个类,将所有这些sharePref汇总为一个名为totalscore的整数,类似{{ 3}}。最终它可以工作。

我想在按重新启动按钮时清除sharePreferences的值,因为它保持高分。

谢谢您的时间,对我的英语深表歉意。

1 个答案:

答案 0 :(得分:0)

我通常在项目中管理sharedPreferences的方式是,创建一个名为AppPreferences的类,然后在其中创建用于读取和写入某些首选项的getter和setter方法。这有助于我管理所有首选项,也将所有用户首选项都放在一个位置。

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文件,并在其中添加所有键和静态变量,这样您就不必担心键的拼写和全部内容了。