共享首选项未正确获取布尔值
Shared preferences isn't gettingBoolean properly
我正在尝试从共享首选项加载布尔值。第一次启动时它应该是 TRUE,因为我从未将它保存到共享首选项。但是,我以某种方式变得错误。
见下面的代码。
settings = context.getSharedPreferences(SAVED_PREFERENCES, 0);
isFirstLaunch = settings.getBoolean(FIRST_LAUNCH, true);
Log.d(TAG, "loadIsFirstLaunch: " + isFirstLaunch);
p.s。在 100% 之前,我还没有在共享首选项中保存 FIRST_LAUNCH 值。
UPD1 我已经仔细检查了空项目 - 代码工作正常。共享首选项使用布尔值 class,而不是布尔原始类型。所以默认情况下布尔值不是假的。另外根据调试,我的共享首选项在启动时以某种方式包含 FIRST_LAUNCH 值。所以看看它是如何到达那里的。
UPD2 我终于卡住了。删除了所有提及的 FirstLaunch,但当进行另一个读取其他值的调用时,它仍然以某种方式出现在 SharedPreferences 中。所以问题是 - 我怎样才能摆脱共享偏好中保存的价值。
http://take.ms/Rr0Xf
UPD3 我已将名称更改为我保存的首选项文件并且它起作用了。所以问题是,即使在应用程序全新安装之后,SOMEHOW 设备仍会保留已保存首选项的信息。 PFM。
我无法回答你的问题,因为分数太少所以,如果你 100 确定你没有为 FIRST_LAUNCH 设置任何值,那么 1. 尝试清理应用程序的数据 2 . 能否请您提供完整的源代码
@miller 如果有多个共享首选项怎么办
这是因为默认情况下布尔值将其值设置为 false .. 它仅在共享首选项返回空值时才采用 true 值,但布尔值必须具有 true 或 false 值...它不支持空值。
所以你需要做的是在加载之前在 class 中以编程方式将会话的布尔值设置为 true,然后从会话中获取值
所以我终于找到了问题和解决方案。
在 android M 及更高版本 Google 中,应用程序备份保留在 google 驱动程序中,这就是为什么即使在重新安装后共享首选项也会恢复。我已经禁用了备份。
应用程序部分下的项目清单文件将 android:allowBackup="true" 设置为 false。
我正在尝试从共享首选项加载布尔值。第一次启动时它应该是 TRUE,因为我从未将它保存到共享首选项。但是,我以某种方式变得错误。
见下面的代码。
settings = context.getSharedPreferences(SAVED_PREFERENCES, 0);
isFirstLaunch = settings.getBoolean(FIRST_LAUNCH, true);
Log.d(TAG, "loadIsFirstLaunch: " + isFirstLaunch);
p.s。在 100% 之前,我还没有在共享首选项中保存 FIRST_LAUNCH 值。
UPD1 我已经仔细检查了空项目 - 代码工作正常。共享首选项使用布尔值 class,而不是布尔原始类型。所以默认情况下布尔值不是假的。另外根据调试,我的共享首选项在启动时以某种方式包含 FIRST_LAUNCH 值。所以看看它是如何到达那里的。
UPD2 我终于卡住了。删除了所有提及的 FirstLaunch,但当进行另一个读取其他值的调用时,它仍然以某种方式出现在 SharedPreferences 中。所以问题是 - 我怎样才能摆脱共享偏好中保存的价值。 http://take.ms/Rr0Xf
UPD3 我已将名称更改为我保存的首选项文件并且它起作用了。所以问题是,即使在应用程序全新安装之后,SOMEHOW 设备仍会保留已保存首选项的信息。 PFM。
我无法回答你的问题,因为分数太少所以,如果你 100 确定你没有为 FIRST_LAUNCH 设置任何值,那么 1. 尝试清理应用程序的数据 2 . 能否请您提供完整的源代码
@miller 如果有多个共享首选项怎么办
这是因为默认情况下布尔值将其值设置为 false .. 它仅在共享首选项返回空值时才采用 true 值,但布尔值必须具有 true 或 false 值...它不支持空值。
所以你需要做的是在加载之前在 class 中以编程方式将会话的布尔值设置为 true,然后从会话中获取值
所以我终于找到了问题和解决方案。
在 android M 及更高版本 Google 中,应用程序备份保留在 google 驱动程序中,这就是为什么即使在重新安装后共享首选项也会恢复。我已经禁用了备份。
应用程序部分下的项目清单文件将 android:allowBackup="true" 设置为 false。