Android - 如何动态更改首选项活动中的文本?

时间:2012-04-13 17:05:52

标签: android android-activity settings android-preferences

Hello其他程序员,我对Preferences活动有点问题。

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个字符。

如何从代码中执行此操作?

感谢任何帮助

3 个答案:

答案 0 :(得分:25)

试试这样..

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

答案 1 :(得分:1)

这是一个简短的例子:

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

这要求您从PreferenceActivity或PreferenceFragment显示首选项,因为findPreference()是这些类的方法。你很可能已经这样做了。

要在每次用户更改实际首选项时更改摘要,请使用OnPreferenceChangeListener并检查回调中是否更改了相关键。更改后,只需编辑上面的摘要。

答案 2 :(得分:0)

您可以创建ListPreference的子类,在其中设置OnPreferenceChangedListener,您可以从中访问新值,并在ListPreference上设置文本。我认为ListPreference上的setSummary()函数将更新首选项名称下的文本。如果这不起作用,您还可以覆盖getView()以实现您可以直接设置文本的首选项的自定义视图。