2012-02-02 45 views
3

我是新來的android編程。我在我的應用程序中添加了偏好類,我打電話的XML偏好存儲在我的應用程序的XML文件夾。這是它如何將選定的數據顯示到列表首選項的摘要

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <ListPreference android:title="colors" android:key="colors" android:summary="list of colors to choose from " android:entries="@array/list" android:entryValues="@array/lvalues"></ListPreference> </PreferenceScreen>

,並在Java類中我寫了只有一條線,它是此 addPreferencesFromResource(R.xml.prefs);

代碼現在我能夠表現出偏好類也榜上有名一些顏色數據。

我的問題是關於選擇列表首選項,它應該顯示我選擇的首選項的摘要屬性。當前它顯示我爲'可供選擇的顏色列表' 我想要的是顯示選定的顏色說我選擇了白色的總結應該顯示爲白色。

請幫幫我。

謝謝, maddy。

回答

1

您需要擴展ListPreference類,並指定在XML文件

class MyListPref extends ListPreference { 

    public void onClick (DialogInterface dialog, int which) { 
     this.setSummary(MyListPref.this.getEntry()); 
    } 
} 

如果您的自定義偏好類名是com.sample.MyListPref的XML條目將

<com.sample.MyListPref 
    android:key="pref_list" 
    android:title="List Preference" 
    android:dialogTitle="List Pref Dialog" 
    android:entries="@array/pref_items" 
    android:entryValues="@array/pref_items_values"/> 
+0

很抱歉地說,但我無法理解如何做到這一點。我的i代碼正是從這個網站http://mobileorchard.com/android-app-developmentusing-偏好/ – MADDY 2012-02-02 10:31:35

+0

我實際上擴展preferenceActivity所以如何做到這一點先生,我的代碼是完全一樣的,在這個網站 – MADDY 2012-02-02 10:33:07

+0

編輯我的迴應 – 2012-02-02 10:46:22

1

你不需要做擴展listPreferences。在PreferencesActivity文件把按我的例子:

final ListPreference defaultTown=(ListPreference)findPreference(getString(R.string.pref_default_town_key));   
    Log.i("try",defaultTown.getKey()); 

    defaultTown.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
     public boolean onPreferenceChange(Preference preference, Object newValue) {    
      Log.i("theApp", "Selected = " + defaultTown.getValue()); 
      defaultTown.setTitle(defaultTown.getValue()); 
      return true;   
     } 

    });  

上變化值將更新標題 ,當你進入應用程序,您需要被設置在當前的偏好,雖然不是顏色來填充題默認在您的xml

4

在另一個代碼示例中有一個小錯誤,它會導致顯示舊值而不是新值。

這裏是一個工作版本:

ListPreference splashList = (ListPreference) findPreference("splash"); 
splashList.setSummary(splashList.getEntry()); 

splashList.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
    public boolean onPreferenceChange(Preference preference, Object newValue) { 
    String nv = (String) newValue; 

    if (preference.getKey().equals("splash")) { 
     ListPreference splashList = (ListPreference) preference; 
     splashList.setSummary(splashList.getEntries()[splashList.findIndexOfValue(nv)]); 
    } 
    return true; 
    } 

}); 
4

你能真正做到這一點的XML。試試這個:

​​

您選擇的值將替換「%s」。 欲瞭解更多詳情,請閱讀post

相關問題