【发布时间】:2011-06-17 02:02:42
【问题描述】:
我正在尝试强制 PreferenceActivity 刷新。有谁知道怎么做?
我有一个 ResetDefaultsPreference 类,它是 Preference 的子类,并且在单击时应该将所有键以某个前缀开头的首选项重置为默认值。它可以工作,但是当我点击重置首选项时,该屏幕中的任何首选项都不会更新,直到我退出屏幕并重新进入。(这适用于一些自定义颜色首选项,但即使这也不适用于某些@ 987654325@s - 对于那些我必须离开并重新输入 PreferenceActivity 本身以显示更新值的人。)
我试图通过获取根视图并invalidate()ing 来解决此问题,但这似乎不起作用。这是刷新显示的行。它是 Preference 子类的一部分,该子类保留了在 mContext 中创建的 Context。
((Activity)mContext).findViewById(android.R.id.content).invalidate();
这发生在更改并提交首选项值之后。 (值会改变,但显示不会。)有谁知道我可以如何强制 PreferenceActivity 自行刷新?
【问题讨论】:
-
该课程的完整源代码,感兴趣的朋友可以here获取。
-
我发现了一个部分有效的技巧:重置默认值后,调用
setSummary(getSummary() + " ");或从Preference调用类似的东西来更改首选项的摘要,这会导致视图刷新。这适用于自定义颜色首选项,但不更新ListPreference对话框中的值。 -
你试过
Preference的notifyChanged()和notifyHierarchyChanged()吗?