是否允许以下内容?
SharedPreferences prefInfo = getActivity().getSharedPreferences("LogonData", Context.MODE_PRIVATE);
if (prefInfo != null) {
String savedName = prefInfo.getString("myEmailID", "NO DATA");
}
看到最好在SharedPreferences
之前检查getString()
对象是否为空,但我很好奇为什么我不能先检查prefInfo
引用然后获取数据?我讨厌修理东西而不理解为什么?
我的应用在第一行NullPointerException
崩溃了
SharedPreferences prefInfo = getActivity().getSharedPreferences("LogonData", Context.MODE_PRIVATE);
感谢您的帮助
答案 0 :(得分:0)
getSharedPreferences()
将始终返回SharedPreference
,其关联名称为第一个字符串参数。它将永远不会返回null
您肯定会从null
获得getActivity()
,这就是您获得NullPointerException
的原因。从哪个片段的回调方法,你正在调用/执行这个代码块?
答案 1 :(得分:0)
您被告知获取字符串然后检查null的原因是SharedPreferences是用于访问首选项数据的接口,而不是保存数据本身的类。因此,SharedPreferences只是一种可以访问数据的方法。它并不保证这些数据实际存在。
http://developer.android.com/reference/android/content/SharedPreferences.html
至于您的特定错误,因为您正在调用刚刚返回接口的方法,您必须在空对象上调用该方法。你的getActivity()失败了。