2013-06-23 33 views
0

在我的應用程序中,我嘗試獲取自定義服務器的列表,並且希望能夠添加它們並分別編輯它們各自的設置。在Android中重新實現首選項屏幕

標準Android PreferenceFragment外觀和工程偉大爲我的目的。有沒有一種方法可以用它編輯選定的項目?或者,我可以輕鬆地重新創建其外觀和行爲嗎?

一言以蔽之:

----------------         ---------------- 
|    +|         |    | 
| Item A  |         | Preference | 
| Item B  | --> Click on "A", "B" or "+" --> | Screen | 
| ...   |         |    | 
|    |         |    | 
----------------         ---------------- 

請注意,我也知道如何使用屏幕的層次結構,並且不符合該法案,因爲我不能添加或刪除動態項目,而應用程序是運行。

+0

的主題是「機器人:Theme.Holo」 ......你有什麼期望? –

+0

我沒有問及主題(我知道如何改變),我問的是動態使用PreferenceFragment,而不必將其綁定到XML資源。看到我的更新,也許它會更清晰的架構? –

回答

1

從我的理解,你想在你的片段動態添加偏好..我是嗎?

只要看看這個示例中,我發現:

onCreate(){ 
    this.setPreferenceScreen(createPreferenceHierarchy()); 
} 

public PreferenceScreen createPreferenceHierarchy(){ 
    PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this); 

    // category 1 created programmatically 
    PreferenceCategory cat1 = new PreferenceCategory(this); 
    cat1.setTitle("title"); 
    root.addPreference(cat1); 

    ListPreference list1 = new ListPreference(this); 
    list1.setTitle(getResources().getString(R.string.some_string_title)); 
    list1.setSummary(getResources().getString(R.string.some_string_text));  
    list1.setDialogTitle(getResources().getString(R.string.some_string_pick_title)); 
    list1.setKey("your_key"); 

    CharSequence[] entries = calendars.getCalenders(); //or anything else that returns the right data 
    list1.setEntries(entries); 
    int length    = entries.length; 
    CharSequence[] values = new CharSequence[length]; 
    for (int i=0; i<length; i++){ 
     CharSequence val = ""+i+1+""; 
     values[i] = val; 
    } 
    list1.setEntryValues(values); 

    cat1.addPreference(list1); 

    return root; 
}//end method 
+0

不錯,這正是我一直在尋找的!我嘗試谷歌,但搜索「android自定義偏好屏幕」或東西沒有完全產生相關的答案... –

+0

這就是我在看完你的問題後在Google中鍵入:Android程序添加偏好 –

+0

Woot。那麼我必須爲我缺乏洞察力而道歉。無論如何感謝一堆;) –