java无法更新运行4的智能手机上PreferenceActivity的标题摘要。十、
据我所知,在运行4的智能手机上。当您有一个带有标题的PreferenceActivity时,操作系统将首先创建一个包含标题的活动。当用户单击标题列表中的一个项目时,将创建另一个活动,表示该项目的PreferenceFragment。在平板电脑上,标题列表和此片段属于同一活动,并同时出现在屏幕上
所以,问题是这个。当用户在PreferenceFragment中,并且他在那里更改了一些设置时,我想更新相应的标题摘要。我从onBuildHeaders()调用中引用了headers对象:
@Override
public void onBuildHeaders(List<Header> aTarget) {
...
headers = aTarget;
}
现在,为了更新标题,我在该列表中循环并检查id:
private void setHeaderSummary(int id, String summary) {
for (Header header : headers) {
if (header.id == id) {
header.summary = summary;
invalidateHeaders();
return;
}
}
}
这在平板电脑上非常有效,但在智能手机上却没有效果。当用户从PreferenceFragment返回到第一个PreferenceActivity时(通过点击后退按钮),标题保持不变
# 1 楼答案
我一边打字一边想出了答案。在第二个活动(包含PrefenceFragment的活动)中调用invalidateHeaders()。应该在初始活动(包含标题的活动)中调用它。这不是最漂亮的解决方案,但我保留了对父活动的引用,如果首选项被更改,onResume()将使标题无效