2012-04-13 37 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