我尝试在我的应用中使用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语句仍然会执行,因为布尔值似乎仍然是假的。
我做错了什么?
答案 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();