PreferenceFragmentのプリファレンスに別の共有プリファレンスキーを持つ必要はありません。 Androidフレームワークは、永続的(android:persistent = true)として指定した場合、自動的に共有設定に保存されます。デフォルトでは、永続フラグはtrueです。 ドキュメントごと:
PreferenceFragmentは、Preferenceオブジェクトの階層をリストとして示しています。 これらの設定は、 ユーザが対話するときにSharedPreferencesに自動的に保存されます。あなたのケースでは
あなたはDEFAULTVALUEはentryvalues_list_preference要素である必要があり、リストの優先
<ListPreference
android:key="pref1"
android:title="title"
android:summary="description"
android:entries="@array/entries_list_preference"
android:entryValues="@array/entryvalues_list_preference"
android:defaultValue="1"
android:dialogTitle="dialog title" />
注意を使用することができます。
環境設定値が に変更されたときに、特定の機能を実行する必要がある場合は、環境設定変更リスナーを追加する必要があります。
ListPreference preference1 =(ListPreference)findPreference( "pref1");
ListPreference preference1 = (ListPreference) findPreference ("pref1");
performAction(preference1.getValue());
preference1.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
/**
* Called when a Preference has been changed by the user. This is
* called before the state of the Preference is about to be updated and
* before the state is persisted.
*
* @param preference The changed Preference.
* @param newValue The new value of the Preference.
* @return True to update the state of the Preference with the new value.
*/
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
performAction(String.valueOf(newValue));
return true;
}
});
private void performAction(String type) {
switch (type){
case "0": // when 0 value is selected
break;
case "1": //when 1 value is selected
break;
case "2": //when 2 value is selected
break;
}
}
あなたは好みにカスタム操作を必要としない場合は、あなただけの追加/環境設定xmlファイルで削除して、Androidのフレームワークがあなたのためにそれを処理するよう好みの初期化/ updation心配べきではありませんする必要があります。
あなたの質問は少しばかりです。あなたが言及した3つのステップは、SharedPreferenceベースの設定で作業するために不可欠です。最初のステップはUIステップであり、実装固有のものですが、2番目のパートは潜在的なリスナーに通知します。私は第3のポイントであなたが何を意味したのか分かりません。また、もう少しあなたの質問を明確にしようとすることができますか? – Dibzmania
@Dibzmania私の質問を更新します、これが助けてくれるといいですね – user1244932