次のようなXMLファイルでPreferenceScreenを定義しています。
<PreferenceCategory android:title="Choose Days">
<PreferenceScreen android:title="Days of Week" android:key="daysOfWeek">
<CheckBoxPreference android:title="Mondays" android:key="chkMonday"></CheckBoxPreference>
<CheckBoxPreference android:title="Tuesdays" android:key="chkTuesday"></CheckBoxPreference>
<CheckBoxPreference android:title="Wednesdays" android:key="chkWednesday"></CheckBoxPreference>
<CheckBoxPreference android:title="Thursdays" android:key="chkThursday"></CheckBoxPreference>
<CheckBoxPreference android:title="Fridays" android:key="chkFriday"></CheckBoxPreference>
<CheckBoxPreference android:title="Saturdays" android:key="chkSaturday"></CheckBoxPreference>
<CheckBoxPreference android:title="Sundays" android:key="chkSunday"></CheckBoxPreference>
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="Other Settings">
<CheckBoxPreference android:title="Enable" android:defaultValue="true" android:key="enable"></CheckBoxPreference>
</PreferenceCategory>
PreferenceScreen:daysOfWeekをクリックすると、チェックボックスが表示されます。チェックボックスをオンまたはオフにすると、onSharedPreferenceChangedがトリガーされます。
これはこれが原因です:
パブリッククラスMutenyはPreferenceActivityを拡張し、OnSharedPreferenceChangeListenerを実装します{
onResumeに登録し、.javaファイルのonPauseで登録を解除します。
簡略化されたonSharedPreferenceChangedは次のようになります。
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
PreferenceScreen daysOfWeek = ((PreferenceScreen)findPreference("daysOfWeek"));
daysOfWeek.setSummary("text for summary");
Toast.makeText(this.getApplicationContext(), "Hello", Toast.LENGTH_LONG).show();
}
問題は、「daysOfWeek」の要約が更新されないことです。次に、CheckBoxPreferenceを「有効」に切り替えると(現時点では何も実行されませんが、変更がトリガーされます)、「デイボックス」を切り替えたときに必要に応じて概要が更新されます。
トーストのメッセージは表示されますが...
「日ボックス」をチェックするときに、PreferenceScreenの要約を更新するにはどうすればよいですか?