有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我一边打字一边想出了答案。在第二个活动(包含PrefenceFragment的活动)中调用invalidateHeaders()。应该在初始活动(包含标题的活动)中调用它。这不是最漂亮的解决方案,但我保留了对父活动的引用,如果首选项被更改,onResume()将使标题无效