gpt4 book ai didi

android - PreferenceActivity更新总结

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:27 24 4
gpt4 key购买 nike

我有一个 PreferenceActivityPreferenceScreen 的 2 级树,类似于:

<PreferenceScreen>
<PreferenceScreen android:key="A">
<ListPreference/>
<EditTextPreference/>
</PreferenceScreen>
<PreferenceScreen android:key="B">
<ListPreference/>
<EditTextPreference/>
</PreferenceScreen>
...
</PreferenceScreen>

每个较低级别的偏好屏幕,例如 A 和 B,都在收集两个相关的数据。我希望这些父项的摘要是两个子偏好的当前值的组合。

我尝试在叶首选项上添加 onPreferenceChangeListener 并从那里更新摘要,但似乎没有用。首选项都是在 Activity 中以编程方式创建的,所以我在 onCreate 中做这样的事情:

   leafListPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// do some work
prefScreenA.setSummary( /* get new summary based on newValue */);
return true;
}
});

然后我试图找到一个位置,在该位置可以通知我我已从子页面返回到顶级首选项屏幕,以便我可以在那个位置进行更新。但是,我对如何显示较低级别的屏幕感到困惑。看起来它们实际上是对话框,而不是完整的 Activity ,因为在它们之间移动时不会调用 onPause/onResume。返回顶级页面时是否会调用某些我遗漏的方法?

我还尝试添加一个 sharedPreferenceChangeListener,如所述 here ,但这似乎从来没有被调用过。

有人对我在这里遗漏的内容或我遗漏的任何更简单的方法有任何提示吗?

最佳答案

我遇到了同样的问题,似乎在摘要更改后调用 Activity.onContentChanged() 解决了我的问题。

@Override
public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
// Update summary value
EditTextPreference pref = (EditTextPreference)findPreference(key);
pref.setSummary(pref.getText());
this.onContentChanged();
}

关于android - PreferenceActivity更新总结,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4653264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com