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

Android Studio ViewBinding设置TextView文本不生效问题求助

BirthdayGreetingActivity页面文本不更新问题修复

问题现象

  • 程序运行无任何报错,但页面问候文本始终不发生变更
  • 已通过Logcat验证,name参数已从MainActivity.kt成功传递到BirthdayGreetingActivity.kt
  • 初步怀疑binding.birthdayGreeting.text = "Happy Birthday $name"代码未正常生效

问题根因

ViewBinding使用逻辑错误:你已经通过ActivityBirthdayGreetingBinding.inflate(layoutInflater)加载了布局实例并生成对应的binding对象,但setContentView()传入的参数是R.layout.activity_birthday_greeting,这会让Activity重新加载一份完全独立的布局实例显示在屏幕上。你后续修改文本的操作,作用在binding持有的那份未被显示到屏幕上的布局控件上,屏幕上展示的是另一份独立加载的布局内容,自然看不到文本变化。

原有代码参考

MainActivity.kt(逻辑无问题,无需修改)

package com.example.firstapp

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import com.example.firstapp.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    }
    fun createBirthdayCard(view: View){
        val name = binding.nameInput.editableText.toString()
        val intent = Intent(this,BirthdayGreetingActivity::class.java)
        intent.putExtra(BirthdayGreetingActivity.NAME_EXTRA,name)
        startActivity(intent)

    }
}

原BirthdayGreetingActivity.kt(存在错误)

package com.example.firstapp

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.example.firstapp.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(R.layout.activity_birthday_greeting)

        val name = intent.getStringExtra(NAME_EXTRA)
        binding.birthdayGreeting.text = "Happy Birthday $name"
    }
}

修复方案

将BirthdayGreetingActivity中setContentView(R.layout.activity_birthday_greeting)替换为setContentView(binding.root),让Activity显示binding持有的布局实例,后续对binding内控件的修改就会正常反映到可见页面上。
修复后BirthdayGreetingActivity核心代码段:

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"
}

修改完成后重新运行App,即可看到问候文本正常展示传递过来的name值。

:) :) 非常感谢大家抽出宝贵时间提供帮助 :) :)


内容的提问来源于stack exchange,提问作者Prems Finance

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:15:37