我正在尝试从共享首选项中删除数据。但我不能这样做。要跟踪数据是否被删除,我使用此代码:
btnLogout.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
SharedPreferences prefs = getSharedPreferences(share_pref_file, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.remove(share_pref_file);
editor.clear();
editor.commit();
getApplicationContext().getSharedPreferences(share_pref_file, 0).edit().clear().commit();
String strJson = prefs.getString("jsondata","");
if(strJson != null)
{
Log.d("CLEAR", "cccccccccccccccccccccccccccc");
}
userFunctions.logoutUser(getApplicationContext());
Intent login = new Intent(getApplicationContext(),LoginActivity.class);
login.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(login);
// Closing dashboard screen
finish();
}
});
但是在logcat窗口中,它每次都显示“cccccccccccccccccccccccccccc”值。
所以任何人都可以帮我解决如何从共享首选项中删除/删除数据,这样如果我点击“注销”按钮,它将删除所有存储的数据?提前谢谢。
答案 0 :(得分:2)
空字符串仍然是一个字符串(String("") != null
将返回true)。试试这个:
if(!strJson.equals(""))
这假设空字符串永远不会是SharedPreferences
中的有效输入。
答案 1 :(得分:1)
在按钮单击事件中尝试此操作以清除SharedPreferences值。
Editor editor = getSharedPreferences("MyPref", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
答案 2 :(得分:1)
尝试editor.clear();然后是editor.commit();
以下是我使用过的一个例子:
Preference clearPref = (Preference) findPreference("MyPref");
btnLogout.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor editor = settings.edit();
editor.clear();
editor.commit();
Toast.makeText(getBaseContext(), "All data cleared!", Toast.LENGTH_SHORT).show();
return true;
}
});
答案 3 :(得分:0)
要么改变这个:
String strJson = prefs.getString("jsondata", "");
要:
String strJson = prefs.getString("jsondata", null);
然后检查:
if(strJson != null) {
Log.d("CLEAR", "cccccccccccccccccccccccccccc");
}
或保持原样并按照以下方式检查:
if(strJson.equals("")) {
Log.d("CLEAR", "cccccccccccccccccccccccccccc");
}
答案 4 :(得分:0)
settings.edit().clear().commit();
是我使用的一行代码,效果很好
答案 5 :(得分:0)
这是我的解决方案:
您可以在null
shareprefrences
代替您喜爱的数据
getApplicationContext();
SharedPreferences.Editor pref = (Editor) getSharedPreferences("data", MODE_PRIVATE).edit();
pref.putString("admin_no", null);
pref.commit();