Kotlin Android开发中引用XML定义的progress_bar进度条报错问题
Android 进度条控件标识符标红报错解决方案
报错根本原因
你在代码中直接使用progress_bar调用布局控件,但是没有提前对这个控件做变量声明和布局绑定,编译器无法识别该标识符,因此标红报错。
可行修复方案
推荐以下两种官方合规的修复方式,可根据你的项目情况选择:
方案1:使用View Binding(官方推荐,适配所有现代Android项目)
- 开启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() }
- 替换控件调用代码
把原来的progress_bar.visibility = View.GONE替换为:
binding.progressBar.visibility = View.GONE
注意:View Binding会自动把布局里的下划线命名转为小驼峰命名,所以
progress_bar对应属性名为progressBar
方案2:手动findViewById(无需修改Gradle配置,适合快速修复)
- 在Activity类作用域下声明控件变量:
private lateinit var progressBar: ProgressBar
- 在
onCreate方法的setContentView之后初始化控件:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_splash_screen) // 新增控件初始化代码 progressBar = findViewById(R.id.progress_bar) init() }
- 替换控件调用代码
把原来的progress_bar.visibility = View.GONE替换为:
progressBar.visibility = View.GONE
额外提示
不推荐使用已经废弃的Kotlin Android Extensions插件实现控件直接调用,该方案已被官方移除,存在空安全、适配性差等问题。
内容的提问来源于stack exchange,提问作者Mark Gubac
相关产品推荐
相关产品推荐

