安卓共享首选项的清除功能不起作用



我的偏好清除不起作用。

这是我的首选经理.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()

最新更新