2012-04-13 34 views
11

各位程序員您好,我的Preferences參數有點問題。Android - 如何動態更改偏好設置活動中的文本?

http://developer.android.com/reference/android/preference/PreferenceActivity.html

我有隻有一個類優先和listPreference:

<?xml version="1.0" encoding="utf-8"?> 

<PreferenceCategory android:title="@string/basic_settings" > 
    <ListPreference 
     android:defaultValue="70" 
     android:entries="@array/listArray" 
     android:entryValues="@array/listValues" 
     android:key="updates_interval" 
     android:persistent="true" 
     android:summary="@string/SOME_SUMMARY" 
     android:title="@string/SOME_TITLE" /> 
</PreferenceCategory> 

我需要有選擇的值(默認的或用戶定義的一個)寫在listPreference的摘要中例如: 我們將至少有70個字符。

我該如何從代碼中做到這一點?

任何幫助表示讚賞

回答

24

嘗試這樣的..

Preference customPref = (Preference) findPreference("updates_interval");<-- your preferences key 
customPref.setSummary("desired string"); 
+1

謝謝! :)我沒有看到findPreference方法。 – user1332117 2012-04-13 17:38:33

0

您可以創建ListPreference的子類,在其中設置一個OnPreferenceChangedListener從中你將有機會獲得新的價值,並設置您的ListPreference上的文字。我認爲ListPreference上的setSummary()函數將更新首選項名稱下的文本。如果這不起作用,您還可以重寫getView()以實現您可以直接設置文本的Preference自定義視圖。

1

這裏是一個簡單的例子:

Preference etp = (Preference) findPreference("the_pref_key"); 
etp.setSummary("New summary"); 

這就要求你無論是從PreferenceActivity或從PreferenceFragment顯示自己的喜好,因爲findPreference()是這些類的方法。你很可能已經這樣做了。

要每次更改實際首選項時更改摘要,請使用OnPreferenceChangeListener並檢查回調中是否更改了相關密鑰。更改後,只需編輯上面的摘要。

+0

太容易了!非常感謝:)我錯過了findPreference方法... – user1332117 2012-04-13 17:37:57