繁体   English   中英

SharedPerferences似乎不起作用

[英]SharedPerferences doesn't seem to be working

我正在尝试在我的应用程序中使用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语句仍然会执行,因为布尔值似乎仍然是false。

我究竟做错了什么?

让我大胆地猜测。 因为当您重新启动时,您再次将其设置为false。...它在onCreate函数中。

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

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

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

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM