1

共有設定のデフォルト値の設定について少し混乱しています...たとえば、2 つ以上の PreferenceFragment を持つPreferenceActivityあり、各設定フラグメントには、設定ビューの構築に使用される独自の *preference_fragmentX.xml* ファイルがあります。でデフォルト値を設定すると

PreferenceManager.setDefaultValues(getActivity(), R.xml.?????, false);

どの XML を指定する必要がありますか? デフォルト値を持つ *preference_fragmentX.xml* ファイルのすべての設定を含む別の XML 設定ファイルを作成し、これをsetDefaultValuesで使用する必要がありますか? たとえば、ブロードキャスト イベントに登録するアプリを構築する場合、ブロードキャスト イベントが初めて発生する前にユーザーが設定アクティビティを開くかどうかわからないため、ブロードキャスト イベントでデフォルトの設定を初期化したいと考えています。 、またはそれによって開始された別のアクティビティで..では、すべてのフラグメントペインのすべての設定を初期化するにはどうすればよいですか?

すべての設定フラグメント XML ファイルで定義されたすべての設定キーを含む default_preferences.xml ファイルを作成すると機能します ( PreferenceCategory などの他のすべてのタグを指定せずに、PreferenceScreenルートタグとその下のすべての設定タグのみを指定します。さらに、設定ごとにキーとデフォルト値の属性のみを指定しますが、他の 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>
4

0 に答える 0