【发布时间】:2018-08-17 12:44:25
【问题描述】:
几天前,我在this 上发布了关于在屏幕中多次包含相同布局时使用合成属性的问题。
答案很棒,但是在我尝试了几天之后,我发现了一个奇怪的行为:
当从片段(包含对惰性委托获得的视图的引用的片段)前进然后返回(我使用transaction.commit() 和manager.popBackStack() 来执行此操作)时,标签将为空。我已经用调试器检查了那里是否有任何内容为空,但什么也没有。
似乎唯一可行的解决方案是将by lazy 替换为lateinit var 并将它们分配到onViewCreated。
你知道为什么吗?我使用的解决方案作为 kotlin 习语仍然“好”吗?
为了完整起见,我将两段代码包括在内:
部分工作:
private val foundTitle by lazy { detailContainer1.title }
private val foundDescription by lazy { detailContainer1.description }
private val wantedTitle by lazy { detailContainer2.title }
private val wantedDescription by lazy { detailContainer2.description }
一直在工作:
private lateinit var foundTitle: TextView
private lateinit var foundDescription: TextView
private lateinit var wantedTitle: TextView
private lateinit var wantedDescription: TextView
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
foundTitle = detailContainer1.title
foundDescription = detailContainer1.description
wantedTitle = detailContainer2.title
wantedDescription = detailContainer2.description
}
提前致谢
【问题讨论】:
标签: android android-fragments kotlin android-lifecycle