【发布时间】:2023-03-12 08:46:01
【问题描述】:
我正在尝试存储复选框文本,它的状态是共享首选项中的布尔值。我遇到了问题 - 检索值时发现不兼容的类型 Entry<String, Capture<?>> 需要 Entry<String, java.lang.Boolean>(在这一行 Map.Entry<String, Boolean> entry4)
这就是我在共享首选项中存储值的方式 -
SharedPreferences checkedFilterPref = getContext().getSharedPreferences(
Constants.FILTER_CHECKED_PREF, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = checkedFilterPref.edit();
for (Map.Entry<String, Boolean> entry1 : filterPrefHashMap.entrySet()) {
editor.putBoolean(entry1.getKey(), entry1.getValue());
}
editor.commit();
这就是我尝试检索 HashMap 值的方式 -
for (Map.Entry<String, Boolean> entry4 : checkedFilterPref.getAll().entrySet()) {
filterPrefHashMap.put(entry4.getKey(), entry4.getValue());
}
我正在遵循StackOverflow post 中分享的技术。我似乎无法正确处理。任何帮助都将不胜感激。
【问题讨论】:
-
究竟是什么不起作用?你有例外吗?值没有被加载吗?您的应用程序会停止吗?安卓工作室会崩溃吗?请详细说明。
-
checkedFilterPref.getAll().entrySet()返回什么类型的数据?我怀疑它是HashMap<String, Boolean>考虑到您可以在 SharedPreferences 中存储的不仅仅是布尔值 -
就个人而言,我会选择 JSON 转换路线
-
@cricket_007
checkedFilterPref.getAll().entrySet()返回Entry<String, Capture<?>>这就是问题所在。我希望它返回HashMap<String, Boolean>以便我可以继续我的代码。 -
不管怎样,这就是你想要的答案stackoverflow.com/a/26709199/2308683
标签: android hashmap sharedpreferences