私は、preferences.xml で指定したデフォルト値を復元するのに苦労しています。私のコードは次のとおりです。
Preference reset = findPreference(res.getString(R.string.DEFAULT_PREFS));
reset.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference p) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(Preferences.this);
sp.edit().clear().commit();
PreferenceManager.setDefaultValues(Preferences.this, R.layout.preferences, true);
return true;
}
});
このコードは、関数setDefaultValues(context, resId, readAgain)に対する Android 開発者リファレンスの私の理解です。
パラメーター
context 共有設定のコンテキスト。
resId プリファレンス階層 XML ファイルのリソース ID。
readAgain デフォルト値を再読み込みするかどうか。
注: これにより、設定がデフォルト値にリセットされることはありません。その機能については、getDefaultSharedPreferences(Context) を使用してクリアし、続いてこのパラメーターを true に設定してこのメソッドを呼び出します。
まあ、それは機能しません。このコードが実行された後、設定値は同じです。次に、SharedPreferences 変数 sp を調べたところ、次のパスにあるシステム生成ファイルを指してい
ます
。アクティビティを作成しました。
addPreferencesFromResource(R.layout.preferences);
また、sp 変数を調べると、ハッシュ テーブルにはすべての設定がありますが、デフォルト値のフィールドはありません。
編集: 質問される前に、preferences.xml ファイルからの抜粋を次に示します。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<EditTextPreference
android:defaultValue="5000"
android:key="@string/MAX_MESSAGES"
android:numeric="integer"
android:summary="@string/MAX_MESSAGES_desc"
android:title="@string/MAX_MESSAGES_title" />
<EditTextPreference
android:defaultValue="10"
android:key="@string/VIEW_EDGE_ROWS"
android:numeric="integer"
android:summary="@string/VIEW_EDGE_ROWS_desc"
android:title="@string/VIEW_EDGE_ROWS_title" />
<ListPreference
android:defaultValue="0"
android:entries="@array/level_list"
android:entryValues="@array/level_values"
android:key="@string/INITIAL_ORG"
android:summary="@string/INITIAL_ORG_desc"
android:title="@string/INITIAL_ORG_title" />
<ListPreference
android:defaultValue="2"
android:entries="@array/view_list"
android:entryValues="@array/view_values"
android:key="@string/INITIAL_VIEW"
android:summary="@string/INITIAL_VIEW_desc"
android:title="@string/INITIAL_VIEW_title" />
<CheckBoxPreference
android:defaultValue="true"
android:key="@string/AUTOSCROLL"
android:summary="@string/AUTOSCROLL_desc"
android:title="@string/AUTOSCROLL_title" />
<CheckBoxPreference
android:defaultValue="true"
android:key="@string/SEND_THEN_EXIT"
android:summary="@string/SEND_THEN_EXIT_desc"
android:title="@string/SEND_THEN_EXIT_title" />
<Preference
android:key="@string/DEFAULT_PREFS"
android:summary="@string/DEFAULT_PREFS_desc"
android:title="@string/DEFAULT_PREFS_title" />
</PreferenceScreen>