android–MultiSelectListPreference onPreferenceChange()方法得到错误的参数

android–MultiSelectListPreference onPreferenceChange()方法得到错误的参数,第1张

概述我有一个带有MultiSelectListPreference的Android应用程序,我正在使用onPreferenceChange()方法来更新Preference的摘要.我已经设法编写了基于newValues参数更新摘要的代码,但是Object的内容与用户选择的实际选项不匹配.这是我的代码:publicbooleanonPreferenceChange(Preferen

我有一个带有MultiSelectListPreference的Android应用程序,我正在使用onPreferenceChange()方法来更新Preference的摘要.我已经设法编写了基于newValues参数更新摘要的代码,但是Object的内容与用户选择的实际选项不匹配.

这是我的代码:

public boolean onPreferenceChange(Preference preference, Object newValue) {    if (preference instanceof MultiSelectListPreference) {        List<String> newValues = new ArrayList<>((HashSet<String>) newValue);        MultiSelectListPreference pref = (MultiSelectListPreference) preference;        ArrayList<String> newSummary = new ArrayList<>();        ArrayList<CharSequence> values = new ArrayList<>(Arrays.asList(pref.getEntryValues()));        for (int i = 0; i < newValues.size(); i++) {            int currentIndex = findindexOfString(values, newValues.get(i).replaceAll(" ", ""));            String Title = (currentIndex >= 0) ? pref.getEntrIEs()[currentIndex].toString().replaceAll(" ", "") : "";            newSummary.add(Title);        }        pref.setSummary(TextUtils.join(", ", newSummary));    }    return true;}private static int findindexOfString(List<CharSequence> List, String s) {    for (int i = 0; i < List.size(); i++) {        if (s.equals(List.get(i).toString().replaceAll(" ", ""))) {            return i;        }    }    return -1;}

解决方法:

这是我用于根据从onPreferenceChange()接收的newValue对象设置摘要的代码,其中包含存储为首选项的值. (对摘要不好)

public boolean onPreferenceChange(Preference preference, Object newValue) {    if (preference instanceof MultiSelectListPreference) {        List<String> newValues = new ArrayList<>((HashSet<String>) newValue);        pref.setSummary(TextUtils.join(", ", getSummaryListFromValueList(newValues)));    }    return true;}private List<String> getSummaryListFromValueList(List<String> valueList) {        String[] allSummarIEs = getResources().getStringArray(R.array.pref_notif);        String[] allValues = getResources().getStringArray(R.array.pref_notif_values);        List<String> summaryList = new ArrayList<>();        for (int i = 0; i < allValues.length; i++) {            for (String value : valueList) {                if (allValues[i].equals(value)) {                    summaryList.add(allSummarIEs[i]);                }            }        }        return summaryList;    }
总结

以上是内存溢出为你收集整理的android – MultiSelectListPreference onPreferenceChange()方法得到错误的参数全部内容,希望文章能够帮你解决android – MultiSelectListPreference onPreferenceChange()方法得到错误的参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1117409.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存