Android使用Intent在Activity间传Double值仅拿到默认0.0如何解决
问题原因
你的代码存在作用域变量引用错误:also块的入参it才是你新创建的、用于跳转到DailyActivity的Intent实例,而你调用putExtra时用的intent是MainActivity本身持有的、启动当前页面的系统默认Intent,两个不是同一个对象,参数根本没有被写入跳转用的Intent,因此目标页无法读到传入值,只能返回默认的0.0。
修复方案
修改MainActivity中also块内的代码,将参数写入到新创建的跳转Intent即可,DailyActivity的取值代码无需改动。
修复后的MainActivity代码如下:
//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{ jumpIntent -> // 给跳转用的目标Intent添加参数 jumpIntent.putExtra("EXTRA_BMI", bmi) jumpIntent.putExtra("EXTRA_BMR", bmr) startActivity(jumpIntent) } } }
可选优化建议
- 将参数Key定义为全局公共常量,避免两端手写字符串出现拼写错误导致的取值失败:
// 放到公共常量类或者kt文件顶层 const val EXTRA_BMI = "EXTRA_BMI" const val EXTRA_BMR = "EXTRA_BMR"
两端传值、取值时直接引用该常量即可消除拼写出错的风险。
内容的提问来源于stack exchange,提问作者rengsayed
相关产品推荐
相关产品推荐

