You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Intent在Activity间传递变量时抛出NullPointerException的原因

为什么这段代码会抛出NullPointerException?

咱们先揪出问题的核心:你在MainActivity里调用getIntent().getExtras()时,这个方法有可能返回null,这时候直接调用extras.getInt("intVariableName")就会触发空指针异常。

常见原因

  • 第一种最可能的情况:MainActivity不是通过你在Redeem.java里写的那个Intent启动的。比如用户直接从桌面图标打开MainActivity,或者其他地方启动它时没有传递任何Extra参数,这时候getExtras()自然就返回null了。
  • 第二种少见情况:虽然是通过目标Intent启动,但中途有其他代码修改了Intent的Extras,导致参数丢失。

解决方法

推荐两种简单有效的处理方式:

  1. 直接使用带默认值的重载方法(最简洁)
    Intent提供了getIntExtra()方法,支持直接传入默认值。如果Extra不存在或者Intent没有附加参数,会直接返回你指定的默认值,不用手动判空:

    int score = getIntent().getIntExtra("intVariableName", 0); // 0是默认值,可根据业务需求修改
    
  2. 先判空再取值
    如果你需要明确处理“参数缺失”的场景,可以先检查Bundle是否为null:

    Bundle extras = getIntent().getExtras();
    int score = 0; // 初始化默认值
    if (extras != null) {
        score = extras.getInt("intVariableName");
    }
    // 后续可以根据score的值做对应逻辑,比如参数缺失时提示用户
    
  3. 强制校验启动合法性(可选)
    如果你的业务逻辑要求MainActivity必须从Redeem跳转过来,那可以在onCreate里做校验,参数缺失就直接关闭页面:

    Bundle extras = getIntent().getExtras();
    if (extras == null || !extras.containsKey("intVariableName")) {
        finish();
        return;
    }
    int score = extras.getInt("intVariableName");
    

内容的提问来源于stack exchange,提问作者Manas Tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:48:59