使用x首选项碎片时设置共享首选项的默认值

时间:2012-05-13 09:01:28

标签: android preferences default-value fragment preferenceactivity

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

0 个答案:

没有答案