Android Studio 中的警告 NullPointerException

Warning NullPointerException in Android Studio

当我这样做时:

SharedPreferences logData = PreferenceManager.getDefaultSharedPreferences(this);

if(logData.getString("myString", null).equals("some_value")) {

    // do some stuff…

} else {

    // do some other…
}

Android Studio 警告我:

Method invocation 'logData.getString("myString", null).equals("some_value")' may produce ' java.lang.NullPointerException'

我怎样才能避免这个警告?谢谢

不能对空对象调用 equals 方法。尝试先获取字符串并检查它是否为空。

String myString = PreferenceManager.getDefaultSharedPreferences(
    getBaseContext()).getString("myString", null);

if (myString != null) {
    if (myString.equals("something")) {

    }
    else {

    }
}

或者改变getString方法返回的默认值

if (!PreferenceManager.getDefaultSharedPreferences(
    getBaseContext()).getString("myString", "").equals("")) {

}

方法 getString() 将抛出 NUllPointerExcception 因为您通过传递第二个参数返回默认 null 值。

有两种方法可以避免这种情况,

首先,将空字符串作为默认值传递给 getString()

中的第二个参数
SharedPreferences logData = PreferenceManager.getDefaultSharedPreferences(this);

if(logData.getString("myString", "").equals("some_value")) 

或第二,

首先在引用变量中获取您的字符串,然后检查它是否为空,

String logDataString = logData.getString("myString", null);
if(logDataString  != null && logDataString.equals("some_value"))