我对设置共享偏好设置的默认值有点困惑...例如,我有一个带有两个或更多 PreferenceFragment 的 PreferenceActivity 和每个首选项fragmens有自己的* preference_fragmentX.xml *文件,用于构建首选项视图。当我用
设置默认值时PreferenceManager.setDefaultValues(getActivity(), R.xml.?????, false);
我应该指定哪种XML?我是否应该构建另一个XML首选项文件,其中包含具有默认值的* preference_fragmentX.xml *文件的所有首选项,并在 setDefaultValues 中使用此首选项?例如,我可以构建一个注册广播事件的应用程序,我不确定用户是否在第一次触发广播事件之前打开首选项活动,所以我想在广播事件中初始化默认首选项,或者由它启动的另一个活动..那么,如何初始化所有片段窗格的所有首选项?
如果我构建一个default_preferences.xml文件,它包含在所有首选项片段XML文件中定义的所有首选项键,那么它是有效的(我只指定了一个 PreferenceScreen 根标记及其下的所有首选项标记) ,没有指定所有其他标签,如 PreferenceCategory ..此外,对于每个首选项,我只指定键和默认值属性),但我不知道这是否是执行此任务的正确方法因为我必须复制其他XML文件的一部分:
preferences_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>