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

如何在BaseActivity中访问dialog_progress布局的TextView?解决代码报错

问题解决:Dialog布局控件引用错误

你的代码存在三个关键问题,导致了unresolved reference错误:

  1. 类名拼写错误:Textview应该是TextView(Android控件类名首字母大写V)。
  2. 控件查找上下文错误:直接调用findViewById是从当前Activity的布局中查找控件,但tv_progress_bar属于Dialog的布局,必须通过Dialog实例来调用findViewById。
  3. 控件赋值方式错误:不能通过mProgressDialog.tvProgressText设置文本,tvProgressText是你在Activity中声明的变量,需直接操作该变量的text属性。

修正后的基础版代码如下:

private var tvProgressText: TextView? = null

fun showProcessDialog(text: String){
    mProgressDialog = Dialog(this)
    mProgressDialog.setContentView(R.layout.dialog_progress)
    // 从Dialog的布局中查找目标控件
    tvProgressText = mProgressDialog.findViewById(R.id.tv_progress_bar)
    // 给TextView设置显示文本
    tvProgressText?.text = text
    mProgressDialog.show()
}

推荐方案:改用ViewBinding

ViewBinding能彻底避免手动查找控件的错误,同时简化代码:

  1. 先在模块的build.gradle中启用ViewBinding:
android {
    ...
    buildFeatures {
        viewBinding true
    }
}
  1. 修改Activity中的代码:
fun showProcessDialog(text: String){
    val dialogBinding = DialogProgressBinding.inflate(layoutInflater)
    mProgressDialog = Dialog(this)
    mProgressDialog.setContentView(dialogBinding.root)
    // 直接通过Binding对象访问布局内的控件
    dialogBinding.tvProgressBar.text = text
    mProgressDialog.show()
}

这种方式无需手动声明控件变量,还能避免空指针风险。

内容的提问来源于stack exchange,提问作者Harshvardhan Rijhwani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:40:43