所以我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片段后面的空循环器视图