一个似乎不可能的NullPointerException

时间:2011-06-23 23:05:34

标签: android

我在方法中有以下代码。这是整个方法:

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%发生。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

问题可能是传递的参数作为此行中的上下文:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);

这似乎是解决方案:

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());