1

我对设置共享首选项的默认值有点困惑......例如,我有一个带有两个或多个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>
4

0 回答 0