【问题标题】:Android - How to change texts in the preferences activity dynamically?Android - 如何动态更改首选项活动中的文本?
【发布时间】:2012-04-26 01:47:57
【问题描述】:

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

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

感谢任何帮助

【问题讨论】:

    标签: android android-activity settings android-preferences


    【解决方案1】:

    像这样试试..

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

    【讨论】:

    • 谢谢! :) 我没有看到 findPreference 方法。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这是一个简短的例子:

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

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

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

      【讨论】:

        猜你喜欢
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-30
        • 1970-01-01
        • 1970-01-01
        • 2011-10-27
        相关资源
        最近更新 更多