12

各位程序员,您好,我对 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 个字符。

我怎样才能从代码中做到这一点?

任何帮助表示赞赏

4

3 回答 3

25

试试这样。。

 Preference customPref = (Preference) findPreference("updates_interval");<-- your preferences key
 customPref.setSummary("desired string");
于 2012-04-13T17:29:15.423 回答
1

这是一个简短的例子:

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

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

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

于 2012-04-13T17:31:48.257 回答
0

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

于 2012-04-13T17:30:49.650 回答