我对设置共享首选项的默认值有点困惑......例如,我有一个带有两个或多个PreferenceFragment的PreferenceActivity,每个首选项片段都有自己的 *preference_fragmentX.xml* 文件用于构建首选项视图。当我设置默认值时
PreferenceManager.setDefaultValues(getActivity(), R.xml.?????, false);
我应该指定哪个 XML?我是否应该构建另一个 XML 首选项文件,其中包含具有默认值的 *preference_fragmentX.xml* 文件的所有首选项,并在setDefaultValues中使用这个文件?例如,我可能会构建一个注册广播事件的应用程序,但我不确定用户在第一次触发广播事件之前是否打开了偏好活动,所以我想在广播事件中初始化默认偏好,或者在它启动的另一个活动中.. 那么,如何初始化所有片段窗格的所有首选项?
如果我构建一个 default_preferences.xml 文件,该文件包含在所有首选项片段 XML 文件中定义的所有首选项键(我仅指定PreferenceScreen根标记及其下的所有首选项标记,而不指定所有其他标记,如PreferenceCategory ,则它可以工作。 . 此外,对于每个首选项,我只指定键和默认值属性),但我不知道这是否是执行此任务的正确方法,因为我必须复制其他 XML 文件的一部分:
首选项_fragment1.xml:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="@string/my_preference_category">
<RingtonePreference
android:key="preference_ringtone"
android:ringtoneType="alarm|notification"
android:showSilent="true"
android:summary="@string/preference_ringtone_summary"
android:title="@string/preference_ringtone_title" />
<ListPreference
android:key="preference_list"
android:entries="@array/list_items"
android:entryValues="@array/list_values"
android:summary="@string/preference_list_summary"
android:title="@string/preference_list_title" />
</PreferenceCategory>
</PreferenceScreen>
default_preference.xml:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<RingtonePreference
android:defaultValue="content://settings/system/notification_sound"
android:key="preference_ringtone"/>
<ListPreference
android:defaultValue="5"
android:key="preference_list"/>
</PreferenceScreen>