Android开发:解决TextView赋值Double需CharSequence的类型不匹配问题
问题原因与解决方法
原因
TextView的text属性要求传入CharSequence类型(字符串是该类型的子类),但你计算得出的recommendedCalories是Double数值类型,两者类型不兼容,所以系统抛出类型不匹配的错误。
另外你的代码里还有个语法错误:计算式中的13.7userWeight和5userHeight缺少乘号*,这会导致编译失败,必须补上。
解决方法
类型转换:把Double类型的计算结果转换成字符串,赋值给TextView的
text属性。常用两种方式:- 直接转成字符串:
recommendedCalories.toString() - 格式化小数位数(比如保留1位小数):
String.format("%.1f", recommendedCalories) - 转成整数(如果不需要小数部分):
recommendedCalories.toInt().toString()
- 直接转成字符串:
修复语法错误:给计算式里的数值和变量之间补上乘号
*。
修改后的完整代码
package com.example.optilife import android.content.Intent import android.os.Bundle import android.widget.Button import android.widget.TextView import androidx.appcompat.app.AppCompatActivity class WelcomeActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_welcome) val welcomeToHomeButton = findViewById<Button>(R.id.SendToHomeButton) welcomeToHomeButton.setOnClickListener { val intent = Intent(this, HomeActivity::class.java) startActivity(intent) } val userAge = intent.getIntExtra("EXTRA_AGE", 0) val userHeight = intent.getIntExtra("EXTRA_HEIGHT", 0) val userWeight = intent.getIntExtra("EXTRA_WEIGHT", 0) // 修复乘号缺失的语法问题 val recommendedCalories = (66 + 13.7 * userWeight + 5 * userHeight - 6.8 * userAge) val caloriesText = findViewById<TextView>(R.id.tv_Test).apply { // 格式化后转成字符串赋值,这里示例保留1位小数 text = String.format("%.1f", recommendedCalories) // 若不需要小数,可替换为:text = recommendedCalories.toInt().toString() } } }
内容的提问来源于stack exchange,提问作者JenairoB
相关产品推荐
相关产品推荐

