我有一个preference_headers.xml文件,用于填充我的设置标题。我想更改标题的摘要以反映它所拥有的sharedPreference。我已经为我的其他片段使用了OnSharedPreferenceChangeListener,它工作正常,但这些是偏好屏幕下的片段,所以我可以像这样访问它们。
SharedPreferences sp = getPreferenceScreen().getSharedPreferences();
EditTextPreference editTextPref = (EditTextPreference) findPreference("pref_text");
editTextPref
.setSummary(sp.getString("pref_text", "Set an email address"));
但是,我想编辑preference_headers文件中的摘要,这是对另一个活动的意图,所以我没有使用首选项屏幕来存储共享首选项。
<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>
所以我的问题是,如何以编程方式更改上面的标题摘要?
答案 0 :(得分:1)
假设您正在扩展类PreferenceActivity,在重写onBuildHeaders方法后,在调用 LoadHeadersFromResource 之后,只需遍历传递给<的
该列表的类型为Header,可以访问摘要文本以及其他设置。
(对不起,我会提供一个代码示例,但我用C#-monodroid编写)。
答案 1 :(得分:0)
您可以通过迭代ListAdapter
来设置Headers
,以编程方式修改摘要:
@Override
public void setListAdapter(ListAdapter adapter)
{
int i, count;
if (preferenceHeaders == null)
{
preferenceHeaders = new ArrayList<Header>();
count = adapter.getCount();
for (i = 0; i < count; ++i)
{
Header h = (Header) adapter.getItem(i);
if(h.id == R.id.SOME_HEADER_ID_FROM_XML)
{
h.summary = "<new summary at runtime>";
}
}
}
super.setListAdapter(new PreferencesHeaderAdapter(this, preferenceHeaders));
}