You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin开发报Unresolved reference: text错误如何解决

错误原因
  • 导入的合成布局包错误:BirthdayGreeting Activity加载的布局是activity_birthday_greeting.xml,但代码顶部导入的是主活动的布局kotlinx.android.synthetic.main.activity_main.*,无法访问到目标布局里的控件。
  • 控件引用错误:代码中BirthdayGreeting.text的首字母大写,对应的是当前Activity的类名,不是布局中定义的TextView控件ID,Android控件ID大小写敏感,此处写法和实际ID不匹配导致无法识别。
修复方案

临时直接修复

  1. 修正BirthdayGreeting类的布局导入,将顶部的导入语句替换为和加载布局对应的版本:
import kotlinx.android.synthetic.main.activity_birthday_greeting.*
  1. 修正控件引用行,将类名改为和布局ID匹配的小写写法:
birthdayGreeting.text = "Happy Birthday $name"

操作完成后先同步项目再运行即可解决报错。

长期优化方案(推荐)

kotlin-android-extensions合成布局插件已经被官方废弃,后续版本可能无法正常使用,建议换成官方推荐的ViewBinding方案实现控件引用:

  1. 在模块级build.gradle文件中开启ViewBinding功能:
android {
    // 其他配置保持不变
    buildFeatures {
        viewBinding true
    }
}
  1. 重写BirthdayGreeting类代码:
package com.example.birthdaygreet

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.birthdaygreet.databinding.ActivityBirthdayGreetingBinding

class BirthdayGreeting : AppCompatActivity() {
    companion object{
        const val NAME_EXTRA = "name_extra"
    }
    private lateinit var binding: ActivityBirthdayGreetingBinding
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityBirthdayGreetingBinding.inflate(layoutInflater)
        setContentView(binding.root)
        val name = intent.getStringExtra(NAME_EXTRA)
        // 直接通过binding对象访问控件,避免ID写错的问题
        binding.birthdayGreeting.text = "Happy Birthday $name"
    }
}

内容的提问来源于stack exchange,提问作者Alok Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:36:03