我的偏好清除不起作用。
这是我的首选经理.java
public class PreferenceManager {
private static final String PREF_NAME = "my_prefs.xml";
private static PreferenceManager instance;
private SharedPreferences mPrefs;
private SharedPreferences.Editor mEditor;
public static PreferenceManager getInstance(Context context) {
if (instance == null) {
instance = new PreferenceManager(context);
}
return instance;
}
private PreferenceManager(Context context) {
mPrefs = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
mEditor = mPrefs.edit();
}
private static final String UUID = "UUID";
private String uuid = "";
public void setUuid(String key) {
this.uuid = key;
clear(UUID);
mEditor.putString(UUID, key);
mEditor.commit();
}
public String getUuid() {
if (uuid.equals("")) {
uuid = mPrefs.getString(UUID, "");
}
return uuid;
}
//clear
public void clear(String key) {
mEditor.remove(key);
mEditor.commit();
}
public void allClear(){
mEditor = mPrefs.edit();
mEditor.clear();
mEditor.commit();
}
}
当我像这样在我的活动中使用它时
PreferenceMangaer.getInstance(getApplicationContext).setUUID("ok");
或
String result= PreferenceMangaer.getInstance(getApplicationContext).getUUID;
当我调试时,clear(UUID(不起作用,并且全部清除。 为什么它剂量不起作用?
我同时尝试提交((和应用((。
我在等你的帮助 谢谢
您也没有清除全局uuid
。
public void allClear(){
this.uuid = ""; // Clears the global uuid.
mEditor = mPrefs.edit();
mEditor.clear();
mEditor.commit();
}
所以这就是为什么你的getUuid
得到和以前一样的结果。
您不必存储uuid
的本地引用。
private static final String UUID = "UUID";
public void setUuid(String key) {
mEditor.putString(UUID, key);
mEditor.apply(); // better use apply() instead commit()
}
public String getUuid() {
return mPrefs.getString(UUID, "");
}
//clear
public void clear(String key) {
mEditor.remove(key);
mEditor.apply();
}
public void allClear(){
mEditor.clear();
mEditor.apply();
}
使用键和编辑器函数。
SharedPreferences Prefs =PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = Prefs.edit();
editor.remove(String key);
editor.apply()