【问题标题】:Android preference activity does not update correctlyAndroid 偏好活动未正确更新
【发布时间】:2013-07-17 00:15:40
【问题描述】:

我创建了一个 android 首选项页面,并希望显示在摘要中选择的当前选项。

所以我实现了 onSharedPreferenceChanged 监听器,它也被正确调用。但是,没有屏幕更改,并且显示旧选项。

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    // just update all
    ListPreference lp = (ListPreference) findPreference(PREF_DOWNLOAD_WEB);
    lp.setSummary(getString(R.string.pref_listDownloadWebSummary)  + ": %s");
}

这是一个已知的错误吗?

【问题讨论】:

    标签: android android-preferences


    【解决方案1】:

    我注意到,当我设置另一个首选项摘要时,会显示更新的摘要。所以我首先将摘要设置为“虚拟”,然后才是真正的字符串。它也有效。

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        // just update all
        ListPreference lp = (ListPreference) findPreference(PREF_DOWNLOAD_WEB);
        lp.setSummary("dummy"); // required or will not update
        lp.setSummary(getString(R.string.pref_listDownloadWebSummary)  + ": %s");
    
    }
    

    【讨论】:

    • 您在哪些版本的 Android 上试用过? %s 似乎不适用于 Android 2.3。 (我没有尝试完全相同的代码,但非常相似。)
    • 这在 Android 2.3 上运行良好。如果您在问题中发布代码会更好。
    • 好吧,我使用的是 Preference.OnPreferenceChangeListener,但我不确定这是否真的值得提问,因为使用 findIndexOfValue 查找字符串非常容易。
    猜你喜欢
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多