You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android跨Activity读取SharedPreferences已存值返回0问题求助

问题根因

你读取SharedPreferences时调用的API和存储时的API不匹配,导致访问的不是同一个存储文件,自然读不到存入的值:

  • 存储时你调用的是getSharedPreferences("indemnity_calculation_kuwait",MODE_PRIVATE),指定了存储文件名为indemnity_calculation_kuwait
  • 读取时你调用的是getPreferences(MODE_PRIVATE),这个API本质是调用getSharedPreferences(getLocalClassName(), MODE_PRIVATE),默认会以当前Activity的类名作为存储文件名,和你存数据的文件完全不是同一个,所以只能读到默认值0

修复方案

把第二个闪屏Activity里的SharedPreferences初始化逻辑修改成和存储时一致的指定文件名即可:
把原来的代码:

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);

替换为:

SharedPreferences sharedPreferences = getSharedPreferences("indemnity_calculation_kuwait",MODE_PRIVATE);

额外优化建议

  • 存储数据时不需要同时调用apply()和commit(),二者选其一即可:commit()是同步写入,有返回值可以判断写入结果;apply()是异步写入,没有返回值,不会阻塞主线程,你的场景选其中一个调用就足够
  • 建议把SharedPreferences的文件名、存储的key名统一封装成常量,避免后续不同页面调用时拼写错误出现类似问题

内容的提问来源于stack exchange,提问作者mh7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:39:01