我的应用程序有很多类,我将分数分别保存到sharePref中。每个类都有自己的sharePref。最后我制作了一个类,将所有这些sharePref汇总为一个名为totalscore的整数,类似{{ 3}}。最终它可以工作。
我想在按重新启动按钮时清除sharePreferences的值,因为它保持高分。
谢谢您的时间,对我的英语深表歉意。
答案 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文件,并在其中添加所有键和静态变量,这样您就不必担心键的拼写和全部内容了。>