将sharedpreferences中的布尔值设置为null

jfgube3f  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(405)

我正在使用 SharedPreferences 存储用户设置/选项。
我已经添加了一个新的选项,可以打开或关闭,所以想把它存储为一个 boolean 在我的共享首选项文件中。
这一切都是好的,但这是一个新的选择,我想设置我的内部变量 null 如果用户没有显式设置该选项(这样,当新版本第一次运行时,我可以提示用户进行选择)。
以下操作不起作用,因为getboolean需要基元 boolean 作为首选项不在中时返回的默认值 shared+prefs .

myNewSetting = shared_prefs.getBoolean("my_mew_setting",null);

在上面 myNewSetting 是一个 Boolean 可以设置为 null ,但这没用,因为 getBoolean s要求。
有什么办法吗?

zz2j4svz

zz2j4svz1#

如果您需要一个空的返回,您可以继续通过一个对象。它将是一个解决方案,以调整和使用相关的控制值(布尔)在对象中根据您的操作。您各自的类需要parcelable进程。在当前情况下,不幸的是返回null将不起作用。因为默认值需要一个基元类型,所以它必须是true或false。

7tofc5zh

7tofc5zh2#

getboolean方法返回一个基本布尔值,因此即使您将其赋给布尔值,它也只是将其装箱。方法的定义是:
抽象布尔getboolean(字符串键,布尔值)
如果确实要区分设置不存在的情况,只需检查设置是否存在:

if (!shared_prefs.contains("my_mew_setting"))
      myNewSetting = null;
   else
      myNewSetting = shared_prefs.getBoolean("my_mew_setting", true /* never use default value in this code because of the if condition */);

相关问题