我有一个 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/