java - 处理字符串空指针异常,即使在检查 !null 后也是如此

标签 java android nullpointerexception

我经常崩溃

Fatal Exception: java.lang.RuntimeException
Unable to start activity ComponentInfo{com.example.phocast/com.example.phocast.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String java.lang.CharSequence.toString()' on a null object reference

AndroidStudio 还显示方法调用 .toString 可能会产生 NullPointException

我的代码是:

public class SunFragment extends Fragment {

  ArrayList<Object> sunsList;
  Typeface sunfont;
  Double Dlat;
  Double Dlang;

  private AdView mAdView;

  //to be called by the MainActivity
  public SunFragment() {
    // Required empty public constructor
  }

  private static final String KEY_LOCATION_NAME = "location_name";
  public String TAG = "SunFragment";
  public String location;//="No location name found";

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
      location = savedInstanceState.getCharSequence(KEY_LOCATION_NAME).toString();
      } else {
      location = "";
    }
  }

由于我已经在检查 savedInstanceState,我还可以检查什么?

最佳答案

您正在检查 savedInstance 是否为零,但对 getCharSequence(KEY_LOCATION_NAME) 的结果调用 toString 方法却没有已进行 null 检查。

你应该尝试这样的事情

if (savedInstance != null && savedInstance.getCharSequence(KEY_LOCATION_NAME) != null)
   location = savedInstance.getCharsequence(KEY_LOCATION_NAME).toString()

关于java - 处理字符串空指针异常,即使在检查 !null 后也是如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60064008/

相关文章:

android - Android应用中的YouTube视频上传错误

java - Apache Storm Trident 和 Kafka 集成出现 Spout 错误

java - 字符串 switch 语句

java - com.sun.mail.handlers.text_plain无法转换为javax.activation.DataContentHandler

java - 在斯坦福解析器上设置非折叠依赖项

java - 应该在哪里进行加密——在应用程序或数据库级别?

java - Android 的套接字扫描

java - 使用 pubnub 制作 Android 应用程序发送 GPS 信息,但应用程序崩溃并且没有显示错误

objective-c - objective-c 访问已释放对象

java - 为什么我可以在 Java 中抛出 null?