从 sharedPreferences 重置值

Reset value from sharedPreferences

我的应用程序有很多 classes,我将分数保存到 sharePref individually.Every class 有自己的 sharePref.In 最后我做了一个 class 我将所有这些 sharePref 加总成一个名为 totalscore 的整数,类似于 https://gyazo.com/3f0f9da2c64e587dd6244cf3933f957c。最终它起作用了。

我想在按下重启按钮时清除 sharePreferences 的值,因为它保留了高分。

感谢您的宝贵时间,对不起我的英语。

我在我的项目中通常管理sharedPreferences的方式是,我创建一个名为AppPreferences的class,然后在其中创建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 文件并在其中添加所有键和静态变量,这样你就不必担心按键拼写和所有。