2017-10-18 100 views
1

我想从共享首选项加载布尔值。首次启动时,它应该为TRUE,因为我从未将它保存到共享首选项。但是,我不知何故变得虚假。共享首选项不正确gettingBoolean

查看下面的代码。

settings = context.getSharedPreferences(SAVED_PREFERENCES, 0); 
isFirstLaunch = settings.getBoolean(FIRST_LAUNCH, true); 
Log.d(TAG, "loadIsFirstLaunch: " + isFirstLaunch); 

p.s.我在100%之前没有在共享偏好设置中保存FIRST_LAUNCH值。

UPD1我已经用空项目重复检查 - 代码工作正常。共享首选项使用布尔类,而不是布尔基元类型。所以不是这种情况,默认情况下布尔值为false。另外根据调试,我的共享首选项在启动时包含FIRST_LAUNCH值。所以看看它是如何到达那里。

UPD2我终于卡住了。删除了FirstLaunch的所有提示,但在另一个读取其他值的调用发生时,它仍然以某种方式出现在SharedPreferences中。所以问题是 - 我如何摆脱共享偏好中保存的值。 http://take.ms/Rr0Xf

UPD3我已经改名为我保存的首选项文件和它的工作。所以问题是,即使在应用程序全新安装之后,SOMEHOW设备仍然保存着保存的喜好信息。 PFM。

+0

分享您的完整代码,用于插入和阅读偏好数据。 –

+1

默认值必须为true。 –

+1

没有人可以帮助你,直到你提供足够的信息源代码足够的问题.. –

回答

0

获得的价值是什么所以最后我发现问题和解决方案。

在Android M及以上版本中,谷歌在谷歌驱动程序中保留应用程序备份,这就是为什么即使在重新安装共享首选项后,恢复。我禁用了备份。

项目清单文件在应用程序部分设置android:allowBackup =“true”为false。

+0

确实这是一个糟糕的特征。 – greenapps

1

由于点数较少,我无法回答您的问题因此,如果您100%确定您没有为FIRST_LAUNCH设置任何值,请尝试清除应用程序的数据2.您能否提供完整的源代码

而且@miller如果有一个以上的sharedpreferences

什么
1

它,因为默认情况下,布尔值,并将其值设置为false ..只需要真实价值时,有来自返回空值共享首选项,但布尔值必须具有true或false值......它不支持空值。

,所以你需要做的是在会议布尔值设置为true编程在装货前的类,然后从会话

+0

这里的大胡话。 – greenapps