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

Android使用Intent向第二个Activity传递变量时返回NULL如何解决

问题原因

  • 存取类型不匹配:你在Cart页面往Intent存入的totalPax是Int类型、finTotal是Double类型,但在CheckoutScreen页面使用getStringExtra()读取,类型不对应自然返回null。
  • 拼写隐患:你传值用的key是toalPax(少了t的拼写错误),虽然只要两端一致不影响取值,但建议修正为正确拼写避免后续维护踩坑。
  • 额外优化提示:你的数值计算逻辑写在ListView的getView方法中,getView每渲染一个列表项、滚动列表都会被反复调用,会导致金额重复累加、数值错误,建议将金额统计逻辑移到适配器初始化时统一遍历计算一次。

修正方案

修改CheckoutScreen.kt中读取Intent参数的代码,使用对应类型的读取方法即可:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast

class CheckoutScreen : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_checkout_screen)
        
        // 用对应类型的get方法读取,第二个参数为读取失败时返回的默认值
        val pax = intent.getIntExtra("toalPax", 0)
        val cst = intent.getDoubleExtra("finTotal", 0.0)

        Toast.makeText(applicationContext, "Testing = $pax and $cst", Toast.LENGTH_SHORT).show()
    }
}

如果要修正key的拼写错误,同时修改Cart里传值的代码和上面的读取代码即可:
Cart里传值部分修改为:

fun continueToCheckoutInformation(view: View) {
    val intent = Intent(this@Cart, CheckoutScreen::class.java)
    // 修正key的拼写
    intent.putExtra("totalPax", totalPax)
    intent.putExtra("finTotal", finTotal)
    startActivity(intent)
}

对应CheckoutScreen里读取改为:

val pax = intent.getIntExtra("totalPax", 0)
val cst = intent.getDoubleExtra("finTotal", 0.0)

内容的提问来源于stack exchange,提问作者Tanav Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:09:02