首页 > 解决方案 > 从其他类使用时,lateinit 属性绑定尚未初始化

问题描述

MainActivity课堂上我使用这个片段:

lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)

我正在尝试从其他类访问 textView 像这样

MainActivity().binding.textView.text

但我lateinit property binding has not been initialized在这条线上遇到错误?任何人都知道如何解决它?

标签: androidkotlin

解决方案


当您调用 MainActivity() 时,您实际上是在创建 MainActivity 的一个新实例,但它没有绑定到任何生命周期(因此没有调用 onCreate(),因此不会膨胀您的布局)。

如果您尝试从片段访问活动,请调用:

(requireActivity() as MainActivity).binding.textView.text

编辑:请注意,如果您的片段由与 MainActivity 不同的活动托管,则此方法将引发错误


推荐阅读