java - 以编程方式更改标题摘要

标签 java android sharedpreferences android-preferences preferenceactivity

我有一个 preference_headers.xml 文件,用于为我的设置填充 header 。我想更改 header 的摘要以反射(reflect)它持有的 sharedPreference。我为我的其他 fragment 使用了 OnSharedPreferenceChangeListener 并且它工作正常,但那些是偏好屏幕下的 fragment ,所以我可以像这样访问它们..

SharedPreferences sp = getPreferenceScreen().getSharedPreferences();
        EditTextPreference editTextPref = (EditTextPreference) findPreference("pref_text");
        editTextPref
                .setSummary(sp.getString("pref_text", "Set an email address"));

但是,我想编辑 preference_headers 文件中的摘要,这是另一个 Activity 的 Intent ,所以我没有使用首选项屏幕来存储共享首选项。

<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >

<header
    android:key="snooze_pref"
    android:summary="Default snooze is 10 minutes"
    android:title="Snooze Timer" >
    <intent
        android:action="android.intent.action.VIEW"
        android:targetClass="com.example.alarmvoltageservicev2.SnoozePicker"
        android:targetPackage="com.example.alarmvoltageservicev2" />
</header>

所以我的问题是,如何以编程方式更改上面的标题摘要?

最佳答案

假设您要扩展类 PreferenceActivity ,在你覆盖 onBuildHeaders方法,在调用 LoadHeadersFromResource 之后,只需遍历传递给 onBuildHeaders 的“目标”列表。

列表的类型是Header它提供对摘要文本以及其他设置的访问。

(抱歉,我会提供一个代码示例,但我是用 C#-monodroid 编写的)。

关于java - 以编程方式更改标题摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24830937/

相关文章:

java - sendKeys 不适用于与 Appium 和 Java 一起使用的输入(三星的数字键盘)

Flutter - 将 json 数据保存在本地以备将来使用

android - 将 SharedPreferences 的自定义子类与 PreferenceActivity 或 PreferenceFragment 结合使用

java - 不审计 OneToMany 关系有什么缺点?

java - 如何使用断言 (JUnit) 来检查 int?

java - 如何在android中每1分钟移动一次获得不同的纬度和经度?

android - 在 webview 组件上选择证书 ssl

android - SharedPreferences 在清除数据后仍然存在

java - 实时协作免费 Java IDE

java - 编程 Eclipse 插件用于在项目中搜索文件(需要基本帮助)