SharedPreferences无法/不会删除数据

时间:2014-04-09 21:54:14

标签: android sharedpreferences

我尝试使用我的应用中的警告对话框删除共享偏好设置数据,所以:

设置共享首选项:

SharedPreferences settings = getSharedPreferences("MyPrefsFile", 0);
        startLat = Double.longBitsToDouble(settings.getLong("startLat", 0));
        endLat = Double.longBitsToDouble(settings.getLong("endLat", 0));

删除数据方法:

public void discardLocation() {
        SharedPreferences.Editor settings = getSharedPreferences("MyPrefsFile", 0).edit();
        settings.clear();
        settings.commit();
        Toast.makeText(MainActivity.this, "Location Discarded!", 
                Toast.LENGTH_LONG).show();

    }

2 个答案:

答案 0 :(得分:0)

您的主要活动应声明您的首选项背景...

PreferenceManager.setDefaultValues(this, R.xml.default_values, false);

然后你得到一个编辑器并提交更改。它应该工作。

存在两种类型的提交,您应该查看API。

SharedPreferences.Editor ed = PreferenceManager.getDefaultSharedPreferences(mactivity).edit();
ed.putString("default_parse_user_oid", id);
ed.putString("default_parse_user_token", token);

ed.apply();

答案 1 :(得分:0)

实际答案:

我弄清楚为什么SharedPreferences不适合我。

基本上我从未在全球范围内设置SharedPreferences变量!

解决方法:

还没弄清楚为什么我无法使用SharedPreferences

删除我的数据

然而,有一个解决方法。如果你要存储任何类型的数字(int,double),你可以将它们设置回deleteCoordinates()方法中最初的数字。

例如在我的代码中,我正在使用坐标。坐标默认设置为0:

double startLat = 0;
double endLat = 0;

因此在将坐标设置为另一个值之后。 (坐标永远不会为0)你只需在deleteCoordinates()中将它们设置为0。

startLat = 0;
endLat = 0;