新版Android Studio运行Kotlin代码报Unresolved reference: text求助
错误原因
你遇到的Unresolved reference: text报错核心原因是:最新版Android Studio默认已移除旧版自带的Kotlin Android Extensions插件,旧版插件支持直接用布局文件里的控件ID作为变量直接调用,新版已经废弃该能力,因此识别不到birthdayGreeting这个控件变量。
解决方法
方法1:使用官方推荐的ViewBinding(优先推荐)
- 第一步:开启ViewBinding配置,在app模块的
build.gradle文件的android闭包内添加如下配置,同步gradle即可:
android { // 原有配置保持不变 buildFeatures { viewBinding true } }
- 第二步:修改
BirthdayGreetingActivity.kt代码如下:
package com.example.birthdaygreetings import android.annotation.SuppressLint import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.TextView // 导入自动生成的ViewBinding类 import com.example.birthdaygreetings.databinding.ActivityBirthdayGreetingBinding class BirthdayGreetingActivity : AppCompatActivity() { private lateinit var binding: ActivityBirthdayGreetingBinding companion object { const val NAME_EXTRA = "name_extra" } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityBirthdayGreetingBinding.inflate(layoutInflater) setContentView(binding.root) val name = intent.getStringExtra(NAME_EXTRA) binding.birthdayGreeting.text = "Happy Birthday $name" } }
方法2:用传统findViewById(无需修改gradle配置,适合快速适配)
直接修改BirthdayGreetingActivity.kt的onCreate方法即可,注意泛型替换为你布局中birthdayGreeting对应的实际控件类型,示例默认按TextView处理:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_birthday_greeting) val name = intent.getStringExtra(NAME_EXTRA) // 先通过ID查找控件 val birthdayGreeting = findViewById<TextView>(R.id.birthdayGreeting) birthdayGreeting.text = "Happy Birthday $name" }
如果使用该方法记得在文件头部添加导入:import android.widget.TextView。
内容的提问来源于stack exchange,提问作者Hello World
相关产品推荐
相关产品推荐

