Android Studio中小费计算器使用toDouble()遇未解析引用错误求助
解决Kotlin中「unresolved reference: toDouble/toInt」错误
我在Android Studio开发Android Basics Kotlin课程的小费计算器应用时,尝试用toDouble()将字符串转为Double类型,出现「unresolved reference: toDouble」错误,即使粘贴课程官网示例代码问题依然存在,调用toInt()也遇到相同报错。
相关代码
MainActivity.kt
package com.example.tiptime import java.text.NumberFormat import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.example.tiptime.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.calculateButton.setOnClickListener{ calculateTip() } } fun calculateTip() { val stringInTextField = binding.costOfService.text.toString() val cost = stringInTextField.toDouble() } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" tools:context=".MainActivity" tools:ignore="UseSwitchCompatOrMaterialXml"> <EditText android:id="@+id/cost_of_service" android:layout_width="160dp" android:layout_height="wrap_content" android:hint="@string/cost_of_service" android:inputType="numberDecimal" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" android:autofillHints="@string/cost_of_service" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/how_was_the_service" android:id="@+id/service_question" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/cost_of_service"/> <RadioGroup android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/tip_options" android:checkedButton="@+id/option_twenty_percent" app:layout_constraintTop_toBottomOf="@id/service_question" app:layout_constraintStart_toStartOf="parent"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/option_twenty_percent" android:text="@string/amazing_20"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/option_eighteen_percent" android:text="@string/great_18"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/option_fifteen_percent" android:text="@string/ok_15"/> </RadioGroup> <Switch android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/round_up_switch" android:text="@string/round_up_tip" android:checked="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tip_options" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:text="@string/calculate" android:id="@+id/calculate_button" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/round_up_switch" /> <TextView android:id="@+id/tip_result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/tip_amount" app:layout_constraintTop_toBottomOf="@id/calculate_button" app:layout_constraintEnd_toEndOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout>
错误截图

解决方案
检查Kotlin依赖配置
确保项目根目录build.gradle(Project级)中Kotlin插件版本为稳定版:plugins { id 'com.android.application' version '7.4.2' apply false id 'com.android.library' version '7.4.2' apply false id 'org.jetbrains.kotlin.android' version '1.8.20' apply false }并在Module级
build.gradle中启用Kotlin插件:plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' }清理重建项目并清除缓存
依次执行:- 菜单栏
Build > Clean Project Build > Rebuild ProjectFile > Invalidate Caches...,选择「Invalidate and Restart」重启IDE
- 菜单栏
确认视图绑定启用
在Module级build.gradle中确保开启视图绑定:android { ... buildFeatures { viewBinding true } }添加空字符串校验(可选)
提前处理空输入,避免后续潜在异常:fun calculateTip() { val stringInTextField = binding.costOfService.text.toString() if (stringInTextField.isNotBlank()) { val cost = stringInTextField.toDouble() // 后续小费计算逻辑 } }
内容的提问来源于stack exchange,提问作者VakhtangChachanidze
相关产品推荐
相关产品推荐

