我在 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“启用”(此时它什么都不做,但会触发更改),那么摘要会按照我在切换“日框”时想要的方式进行更新。
虽然显示了 Toast 中的消息...
检查“日期框”时如何更新我的 PreferenceScreen 的摘要?