简体   繁体   English

在Android Studio中警告NullPointerException

[英]Warning NullPointerException in Android Studio

When i do: 当我做:

SharedPreferences logData = PreferenceManager.getDefaultSharedPreferences(this);

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

    // do some stuff…

} else {

    // do some other…
}

Android Studio warnings me that: Android Studio警告我:

Method invocation 'logData.getString("myString", null).equals("some_value")' may produce ' java.lang.NullPointerException' 方法调用'logData.getString(“ myString”,null).equals(“ some_value”)'可能会产生'java.lang.NullPointerException'

How can I avoid this warning? 如何避免此警告? Thanks. 谢谢。

The method getString() will throw NUllPointerExcception because you are returning default null value by passing second parameters. 方法getString()将抛出NUllPointerExcception因为您要通过传递第二个参数来返回默认的值。

There are two ways to avoid this, 有两种方法可以避免这种情况,

First, by passing empty string as default value as second argument in getString() 首先,通过将空字符串作为默认值作为getString()第二个参数传递

SharedPreferences logData = PreferenceManager.getDefaultSharedPreferences(this);

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

or Second, 或第二,

First get your String in reference variable than check it for null or not like, 首先将您的String放入参考变量中,然后检查其是否为null或不喜欢,

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

You can't call equals method on a null object. 您不能在空对象上调用equals方法。 Try to get the String first and check if it is null. 尝试首先获取String并检查其是否为null。

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

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

    }
    else {

    }
}

Or changing the default value returned by getString method 或更改getString方法返回的默认值

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

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM