获取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
相关产品推荐
相关产品推荐

