2010-07-19 44 views
2

我知道如何更改CheckBoxPreference的值,但我無法使其工作於ListPreference如何從Android中的java代碼編輯ListPreference值

這是我的個人偏好屏幕是如何構建的:

  • 一個CheckBox默認
  • 一個ListPreference選擇默認值以外的顏色。

ListPreference與鍵 「titleColor」 定義如下:

CharSequence[] entries = { "Dark grey", "Light grey", "Light red", "Red" }; 
CharSequence[] entryValues = { "#4c4c4c", "#b5b5b5", "#ab6a68", "#962622" }; 
final ListPreference color = (ListPreference) findPreference("titleColor"); 
color.setEntries(entries); 
color.setEntryValues(entryValues); 

現在,當我選擇一種顏色我這樣做:

color.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
     public boolean onPreferenceChange(Preference preference, Object newValue) { 
      System.out.println("In the onClick method"); 
      System.out.println("change title color"); 
      Editor editor2 = defaultColor.getEditor(); 
      editor2.putBoolean("defaultColor", false); 
      editor2.commit(); 
      return true; 
     } 

    }); 

這似乎工作,儘管我不確定這是否正確。

現在我一直在嘗試做類似的事情,當我選擇默認顏色,但我無法獲得列表要麼取消選中所有內容,要麼檢查默認顏色。

有什麼想法?

+0

就我而言,ListPreference像字符串值一樣工作。 – Pentium10 2010-07-19 14:22:29

回答

5

CheckBox的情況下:

如果你有一個默認的顏色CheckBox它將使用android:dependency是固定的,但因爲你沒有它,我想這是唯一的辦法。

ListPreference相關,也非常相似:

ListPreference lp = (ListPreference)findPreference("listPreference_key"); 
lp.setValue(""); 

您可以檢查docs知道哪些方法可用。

+0

我添加了我的ListPreference的定義,因爲我嘗試了你的代碼,但雖然它的工作原理,我沒有在列表中選擇,我試圖通過「紅色」而不是「」,仍然沒有選擇......而且我做了在問我的問題之前先閱讀文檔,那是因爲我沒有發現我問過它... – Sephy 2010-07-19 15:01:58

+2

@Sephy:記住你必須通過一個條目而不是entryValue。 – Macarse 2010-07-19 15:14:18

+0

好吧,我的壞。我做錯了。我試圖通過它的入口名稱來獲取顏色(這似乎是我的邏輯方式,但顯然不是)。我必須給它賦值,列表負責爲我檢查正確的元素。 lp.setValue(「#962622」)獲得紅色。我會讓空字符串。 謝謝你的幫助。 – Sephy 2010-07-19 15:17:18