SharedPerferences似乎不起作用

时间:2014-01-16 15:20:35

标签: java android eclipse sharedpreferences

我尝试在我的应用中使用SharedPreferences,但它似乎并没有起作用。

首先,我将SharedPreferences声明为我计划使用它们的活动中的全局变量:

SharedPreferences prefs;

然后我在onCreate中设置默认的SharedPreferences:

prefs = getSharedPreferences("urnikSp", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("schudeleDownloaded", false);
editor.commit();

然后我在完成某个动作时更改布尔值:

prefs.edit().putBoolean("schudeleDownloaded", true).commit();

然后在同一个活动中(当它重新启动时),我在onCreate中检查布尔值,如下所示:

boolean schudeleDownloaded = prefs.getBoolean("schudeleDownloaded", false);
if (!schudeleDownloaded){
    new PopulateDatabase().execute();
}

即使我清楚地将新值设置为" true"在完成某个动作后,您在上面看到的IF语句仍然会执行,因为布尔值似乎仍然是假的。

我做错了什么?

3 个答案:

答案 0 :(得分:0)

让我做一个狂野的猜测。因为当你重置时,你再次将它设置为假......它在onCreate函数中。

答案 1 :(得分:0)

如果要重新创建活动,将再次调用onCreate()方法,因此我认为您将其值更改为false

答案 2 :(得分:-1)

您必须创建单独的SharedPreferences.Editor实例。所以不要这样做:

prefs.edit().putBoolean("schudeleDownloaded", true).commit();

试试这个:

SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("schedeleDownloaded", true);
editor.commit();