Android Studio Flamingo下Kotlin首应用点击按钮崩溃求助
问题解决:按钮点击崩溃与Kotlin Android Extensions替代方案
崩溃原因分析
你代码里的textView声明为lateinit var但从未初始化,点击按钮调用degistir方法时,访问未初始化的textView会直接抛出UninitializedPropertyAccessException,导致应用崩溃。另外,Kotlin Android Extensions确实已被官方废弃,不再支持,你的项目已经在build.gradle中开启了viewBinding true,推荐用View Binding解决视图引用问题。
修复步骤
1. 用View Binding初始化TextView
修改MainActivity.kt代码,通过View Binding获取布局中的TextView:
package com.example.myapplication import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import com.example.myapplication.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 degistir(view: View) { // 这里的textView需和你activity_main.xml里的TextView id一致 binding.textView.text = "Hi Android" } }
2. 匹配布局中的TextView ID
确保activity_main.xml里的TextView的id是textView,如果是其他id(比如tv_content),就把代码里的binding.textView改成binding.tv_content。
关于Kotlin Android Extensions
Kotlin Android Extensions因空安全隐患、性能问题被官方废弃,View Binding是官方推荐替代方案,优势包括:
- 编译时类型检查,避免运行时视图找不到的错误
- 自动处理视图空值情况,更安全
- 无需额外导入,通过Binding类直接访问视图
验证修复
重新编译运行应用,点击按钮后TextView内容会正常更新,不会再崩溃。
内容的提问来源于stack exchange,提问作者Ferhat Aytug
相关产品推荐
相关产品推荐

