0

私の PreferenceActivity の onCreate メソッドで、次のようないくつかのプロパティを設定します。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);      
SharedPreferences.Editor editor = preferences.edit();

editor.putBoolean("pref_mykey", true);

editor.commit();

動作しているようですが、ビューが更新されていないため、プロパティを開くと onCreate が実行され、値が変更されます。次に、設定画面を閉じて再度開くまで、画面に「古い」値が表示されます。その後、新しいプロパティが表示されます。

コミット後にすでにこれを試しました:

((BaseAdapter) getPreferenceScreen().getRootAdapter()).notifyDataSetChanged();

しかし、何の効果もありません。PreferenceActivity を閉じて再度開くまで、「古い」設定がまだ表示されます。

私は何を間違っていますか?onCreate メソッドで値を設定した後、PreferenceActivity を更新するにはどうすればよいですか?

どうもありがとうございました。

4

2 に答える 2

1

これは一日中私を悩ませましたが、最終的に解決策を見つけました。

((ListPreference)getPreferenceScreen()。findPreference( "key_of_preference_in_xml_file"))。setValue(code);

あなたの例はブール値を使用しているので、それがどのような好みであるかに基づいて変更する必要があります。IE:((CheckBoxPreference)getPreferenceScreen()。findPreference( "key_of_preference_in_xml_file"))。setChecked(true);

于 2011-10-04T19:44:59.300 に答える