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

获取SharedPreferences值返回null问题排查求助

问题排查与解决方案

嘿,我一眼就揪出你代码里的问题啦!核心原因是两个Activity使用的SharedPreferences名称不匹配,导致你在Activity B里读取的是一个完全独立的存储文件,自然拿不到Activity A里存的数据。

具体错误点

  • 在Activity A中,你创建的SharedPreferences名称是"MyPref":
    SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
    
  • 但在Activity B中,你写成了"MyPrefs"(末尾多了一个s):
    SharedPreferences preferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
    

另外,你的Activity A代码还有个语法小错误:SharedPreferences.Editor = preferences.edit(); 应该改成 SharedPreferences.Editor editor = preferences.edit();,不然编译都通不过哦。

修正后的代码

Activity A(修正语法错误后)

// 正确初始化Editor变量
SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("FirstUserName", strUserName);
editor.commit();

Activity B(修正SharedPreferences名称)

SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
String strUserName = preferences.getString("FirstUserName", null);

额外小建议

  • 建议把SharedPreferences的名称定义成全局常量,比如public static final String PREF_NAME = "MyPref";,这样所有需要用到的地方直接引用,避免手动输入出错。
  • 如果不需要立即确认存储结果,可以用editor.apply()代替commit(),它是异步操作,性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:50:41