数据未通过 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 在活动之间传递的主要内容,如果未能解决你的问题,请参考以下文章