我有一个类似this的类似问题,所以我根据提出的解决方案进行了处理,并将此行代码添加到onCreate中:
PreferenceManager.setDefaultValues(this, R.xml.settings, false);
不幸的是,问题仍然存在,如果用户未更改设置,仍然是默认值(true)
mPreferences.getBoolean(String.valueOf(day_of_week), true)
使用而不是XML中的默认值。

有人建议将getBoolean()的默认值参数更改为null,但是此代码使应用程序崩溃:

mPreferences.getBoolean(String.valueOf(day_of_week), (Boolean) null)

有什么建议吗?提前致谢!

最佳答案

终于成功了!我确实花了很多时间和精力来寻找错误,并且在我将其发布到这里后,我发现它是一个人发现的~~谢谢大家为我提供的帮助。

如果其他任何人都遇到此问题,则解决方案如下:将getBoolean()的默认值从true更改为false,如下所示:
mPreferences.getBoolean(String.valueOf(day_of_week), true)->不起作用,无论XML中发生了什么,它始终是正确的
mPreferences.getBoolean(String.valueOf(day_of_week), false)->有效!这是XML中正确的默认值

我真的不了解执行此操作的逻辑,但是现在它可以完美运行了。在我看来有点像个 bug 。

09-15 15:48