3

我正在尝试从共享首选项中删除数据。但我不能那样做。为了跟踪数据是否被删除,我正在使用以下代码:

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”值。

那么任何人都可以帮助我如何从共享首选项中删除/删除数据,以便如果我单击“注销”按钮,它将删除所有存储的数据?提前致谢。

4

6 回答 6

2

空字符串仍然是字符串(String("") != null并将返回 true)。试试这个:

if(!strJson.equals("")) 

这假设空字符串首先永远不会是您的有效输入SharedPreferences

于 2013-04-02T06:37:30.823 回答
1

尝试在按钮单击事件中清除 SharedPreferences 值。

Editor editor = getSharedPreferences("MyPref", Context.MODE_PRIVATE).edit();
            editor.clear();
            editor.commit();
于 2013-04-02T06:40:29.763 回答
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;
        }

    });
于 2013-04-02T06:43:04.203 回答
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");
}
于 2013-04-02T06:42:23.730 回答
0
settings.edit().clear().commit();

是我正在使用的单行代码,完美运行

于 2014-09-19T06:30:21.893 回答
0

这是我的解决方案:

您可以将null而不是您喜欢的数据放入shareprefrences

getApplicationContext();
SharedPreferences.Editor pref = (Editor) getSharedPreferences("data", MODE_PRIVATE).edit();
pref.putString("admin_no", null);
pref.commit();
于 2015-07-29T07:26:55.383 回答