我在方法中有以下代码。这是整个方法:
private boolean isPlaceEligible(String eligibleId) {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
String current = sharedPrefs.getString(
PrefsActivity.AUTO_INELIGIBLE_ID, PrefsActivity.AUTO_INELIGIBLE_ID_DEF);
return !eligibleId.equals(current);
}
qualifiedId已知为非null字符串。 PrefsActivity.AUTO_INELIGIBLE_ID是一个String键,PrefsActivity.AUTO_INELIGIBLE_ID_DEF是该键的默认字符串。
那些SharedPreferences的JavaDocs没有提到关于返回null的任何内容,但是我从市场控制台得到了一些崩溃报告,说明这个方法在NullPointerException上崩溃了。根据我收到的报告数量,我估计这种情况发生在300个用户中的一个,可能更少。他们中的两个人通过电子邮件向我发送了关于它的电子邮件,并表示它会100%发生。
有什么想法吗?
答案 0 :(得分:2)
问题可能是传递的参数作为此行中的上下文:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
这似乎是解决方案:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());