数据未通过 Intent 在活动之间传递

Posted

技术标签:

【中文标题】数据未通过 Intent 在活动之间传递【英文标题】:Data not being passed between activities through Intent 【发布时间】:2021-09-08 23:21:04 【问题描述】:
//In MainActivity
binding.doneButton.setOnClickListener 
            checkValid()
            if (valid)
                val bmi: Double = calculateBmi().round(1)
                val bmr: Double = calculateBmr().round(2)
                Intent(this, DailyActivity::class.java).also
                    intent.putExtra("EXTRA_BMI", bmi)
                    intent.putExtra("EXTRA_BMR", bmr)
                    startActivity(it)
                

            
        
//In DailyActivity
var bmi = intent.getDoubleExtra("EXTRA_BMI", 0.0)
var bmr = intent.getDoubleExtra("EXTRA_BMR", 0.0)

我想将这两个 Double 值 bmi 和 bmr 从我的 MainActivity 传递给 DailyActivity。我检查了这些值,它们在 MainActivity 中运行良好。但是当我尝试将它们传递给 DailyActivity 时,会使用默认值 0.0。我也尝试过 intent?.extras?.getDouble("EXTRA_BMI") ,但这也不起作用。我该如何解决这个问题?

(顺便说一句,round 是我在 SO 上找到的扩展功能。它工作正常。这不是代码不工作的原因)

【问题讨论】:

你好,你试过另一个这个:(intent.extras?.get("EXTRA_BMI") as? Double) ?: 0.0 【参考方案1】:

在您的 also 块内,通过调用 intent.putExtra(...) 您正在更改当前 Activity 的意图(您将使用 this@MainActivity.intent 访问的意图),而不是您刚刚创建的意图。

你想要的是

Intent(this, DailyActivity::class.java).also
    it.putExtra("EXTRA_BMI", bmi)
    it.putExtra("EXTRA_BMR", bmr)
    startActivity(it)

【讨论】:

以上是关于数据未通过 Intent 在活动之间传递的主要内容,如果未能解决你的问题,请参考以下文章

Android-活动(Activity)Intent

无法从 ListView 通过 Intent 正确传递数据

通过 Intent 传递自定义对象列表

Android Studio中如何在Activity跳转之间传递数据

3.5 意图Intent的概念

For 语句仅在使用 Intent 传递数据时返回最后一个数据