2013-02-10 60 views
0

我試過在這裏和谷歌上搜索一個答案,但沒有設法得到很遠。無法獲取listPreference在Android中工作

我試圖在Android平臺上做一個listPreference,允許用戶選擇文本顏色。目前它只是返回默認值,我不太確定爲什麼我的if/else語句不起作用。

的prefs.xml:

<ListPreference 
    android:title="textcolorpreference" 
    android:key="list1" 
    android:summary="Text Color" 
    android:entries="@array/list" 
    android:entryValues="@array/lValues" 
    /> 

array.xml:

 <string-array name="list"> 
    <item>Red</item> 
    <item>Green</item> 
    <item>Blue</item> 
    <item>Yellow</item> 
    </string-array> 
    <string-array name="lValues"> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
    <item>4</item> 
    </string-array> 

的Java:

SharedPreferences getPrefs = 
    PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 


     String values = getPrefs.getString("list", "2"); 

     if(values.contentEquals("1")){ 
      tp.setColor(Color.RED); 
     } else if(values.contentEquals("2")){ 
      tp.setColor(Color.GREEN); 
     } else if(values.contentEquals("3")){ 
      tp.setColor(Color.BLUE); 
     }else if(values.contentEquals("4")){ 
      tp.setColor(Color.YELLOW); 
     } 

目前僅列表優先級的缺省值,例如工作如果我把listPreference默認值a String values = getPrefs.getString("list", "2")我得到color.GREEN,這讓我覺得我需要添加一個偏好改變的偵聽器,但我目前無法實現它。

我非常感謝你們提供的幫助!

+0

你'機器人:鍵= 「列表1」'但你調用'getString(「list」' – 2013-02-10 14:48:19

回答

1

您可以從prefecence檢索正確的整數列表1

Integer values = getPrefs.getInt("list1", 2); 

,那麼你可以從檢索到的值進行切換:

switch(values) { 
    case 1: 
     tp.setColor(Color.RED); 
     break; 
    case 2: 
     tp.setColor(Color.GREEN); 
     break; 
    case 3: 
     tp.setColor(Color.BLUE); 
     break; 
    case 4: 
     tp.setColor(Color.YELLOW); 
     break; 
    default: 
     tp.setColor(Color.GREEN); 
} 
+0

StarsSky,你是一個救星! – iRushnikov 2013-02-10 17:06:41