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

Kotlin Android开发中引用XML定义的progress_bar进度条报错问题

Android 进度条控件标识符标红报错解决方案

报错根本原因

你在代码中直接使用progress_bar调用布局控件,但是没有提前对这个控件做变量声明和布局绑定,编译器无法识别该标识符,因此标红报错。

可行修复方案

推荐以下两种官方合规的修复方式,可根据你的项目情况选择:

方案1:使用View Binding(官方推荐,适配所有现代Android项目)

  1. 开启View Binding配置
    在你的模块级build.gradle文件中添加以下配置:
android {
    // 保留原有配置不变,新增以下内容
    buildFeatures {
        viewBinding true
    }
}

同步Gradle配置后修改Activity代码:
2. 声明绑定变量并初始化

// 类作用域下声明绑定变量
private lateinit var binding: ActivitySplashScreenBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // 初始化绑定
    binding = ActivitySplashScreenBinding.inflate(layoutInflater)
    setContentView(binding.root)
    init()
}
  1. 替换控件调用代码
    把原来的progress_bar.visibility = View.GONE替换为:
binding.progressBar.visibility = View.GONE

注意:View Binding会自动把布局里的下划线命名转为小驼峰命名,所以progress_bar对应属性名为progressBar

方案2:手动findViewById(无需修改Gradle配置,适合快速修复)

  1. 在Activity类作用域下声明控件变量:
private lateinit var progressBar: ProgressBar
  1. 在onCreate方法的setContentView之后初始化控件:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_splash_screen)
    // 新增控件初始化代码
    progressBar = findViewById(R.id.progress_bar)
    init()
}
  1. 替换控件调用代码
    把原来的progress_bar.visibility = View.GONE替换为:
progressBar.visibility = View.GONE

额外提示

不推荐使用已经废弃的Kotlin Android Extensions插件实现控件直接调用,该方案已被官方移除,存在空安全、适配性差等问题。

内容的提问来源于stack exchange,提问作者Mark Gubac

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:15:04