2012-11-23 102 views
4

從我注意到智能手機PreferenceActivity頭摘要,上運行4.x版當你有一個頭的智能手機PreferenceActivity,操作系統將首先創建一個包含頭文件的活動。當用戶從標題列表中單擊一個項目時,將創建另一個活動來表示該項目的PreferenceFragment。在平板電腦上,標題列表和此片段屬於同一活動,並同時出現在屏幕上。無法更新上運行4.x的

那麼,問題是這樣的。當用戶在PreferenceFragment中時,他在那裏更改了一些設置,我想更新相應的標題摘要。我有一個標題引用從onBuildHeaders對象()調用:

@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時(通過點擊後退按鈕),標題保持不變。

回答

3

我想通了解決方案,同時打字的問題。在第二個活動(包含PrefenceFragment的活動)中調用invalidateHeaders()。它應該在最初的活動(包含標題的活動)中調用。這不是最漂亮的解決方案,但是我保留對父活動和onResume()的引用,如果首選項已更改,則使標題無效。