带有片段的默认首选项值

Default preferences values with fragments

我有一个包含我的首选项的 xml 文件。在里面我有几个偏好片段。每个首选项片段都关联了其首选项 xml 文件。我要打电话给:

PreferenceManager.setDefaultValues(this, R.xml.settings, false);

每个 xml 文件?文档说只有第一次调用(使用 false 参数)才会写入默认值。我错过了什么吗?如何管理多个分片?

回复自己:

 // we cannot call setDefaultValues for multiple fragment based XML preference files with readAgain flag set to false, so always check KEY_HAS_SET_DEFAULT_VALUES
        if (!PreferenceManager.getDefaultSharedPreferences(this).getBoolean(PreferenceManager.KEY_HAS_SET_DEFAULT_VALUES, false)) {
            PreferenceManager.setDefaultValues(this, R.xml.frag1, true);
            PreferenceManager.setDefaultValues(this, R.xml.frag2, true);
            .......
            PreferenceManager.setDefaultValues(this, R.xml.fragN, true);
        }