Android Studio中显式Intent跳转Login页面触发应用崩溃问题
解决Explicit Intent跳转LoginActivity时的崩溃问题
从崩溃日志可定位核心错误:
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property binding has not been initialized
问题出在LoginActivity的初始化逻辑中:你声明了lateinit var binding: ActivityLoginBinding,但在访问binding.username、binding.password等控件前,未完成binding的初始化,而是直接调用传统的setContentView(R.layout.activity_login),导致ViewBinding未生效。
修改LoginActivity的onCreate方法
将LoginActivity中布局绑定代码替换为ViewBinding的初始化方式:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 初始化ViewBinding,替换原有的setContentView(R.layout.activity_login) binding = ActivityLoginBinding.inflate(layoutInflater) setContentView(binding.root) val username = binding.username val password = binding.password val login = binding.login val loading = binding.loading // 以下原有逻辑保持不变 loginViewModel = ViewModelProvider(this, LoginViewModelFactory())[LoginViewModel::class.java] // ... 后续代码省略 }
说明
修改后,binding会被正确初始化,后续通过binding访问布局控件的操作不会触发未初始化异常,点击MainActivity的Login按钮后即可正常跳转到LoginActivity页面。
内容的提问来源于stack exchange,提问作者Mathuram Murugaiyan
相关产品推荐
相关产品推荐

