相关疑难解决方法(0)

Kotlin延迟属性和值重置:可重置的惰性委托

所以我kotlin用于android,当膨胀视图时,我倾向于做以下事情:

private val recyclerView by lazy { find<RecyclerView>(R.id.recyclerView) }
Run Code Online (Sandbox Code Playgroud)

这种方法可行.但是,有一种情况会导致应用程序出错.如果这是一个片段,并且片段转到backstack,onCreateView将再次调用,并且将重新创建片段的视图层次结构.这意味着,懒惰启动的recyclerView将指出不再存在的旧视图.

解决方案是这样的:

private lateinit var recyclerView: RecyclerView
Run Code Online (Sandbox Code Playgroud)

并初始化内部的所有属性onCreateView.

我的问题是,有没有办法重置懒惰属性,以便可以再次初始化它们?我喜欢这样的事实:初始化都是在类的顶部完成的,有助于保持代码的有序性.具体问题是在这个问题中找到的:kotlin android片段后面的空循环器视图

android properties lazy-initialization kotlin

24
推荐指数
2
解决办法
5212
查看次数

标签 统计

android ×1

kotlin ×1

lazy-initialization ×1

properties ×1