【问题标题】:PreferenceFragement does not set SharedPreferences until after PreferenceFragment is loaded在加载 PreferenceFragment 之前,PreferenceFragment 不会设置 SharedPreferences
【发布时间】:2014-10-03 05:25:02
【问题描述】:

在我加载首选项片段之前,不会将 PreferenceFragment 首选项添加到我的 SharedPreference 映射中。

  1. 这是 PreferenceFragment 的预期行为吗?

  2. 如果是这样,在用户访问偏好片段之前,将preferences.xml 中指定的所有默认值应用于 SharedPreferences 的最佳方式是什么?

【问题讨论】:

    标签: android android-fragments sharedpreferences preferencefragment


    【解决方案1】:

    您可以将PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 放在应用启动器活动的onCreate() 函数中,以便在用户首次启动应用时立即应用所有默认值。

    【讨论】:

    • 谢谢!注意事项:我必须卸载该应用程序才能正常工作,因为根据文档,“this method sets the default values only if this method has never been called in the past (or if the KEY_HAS_SET_DEFAULT_VALUES in the default value shared preferences file is false)”。
    • 嗯,这很奇怪......所以很明显该方法过去从未被调用过,所以这意味着 KEY_HAS_SET_DEFAULT_VALUES 一定是真的。很奇怪,但很高兴它最终为你工作!
    • 哦,等等,该键当然设置为 true,因为您可能已经加载了 PreferencesFragment 之前会设置默认值。所以重新安装是有道理的。不知道我是怎么错过的:p
    • 是的,没错。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多