Сброс ленивых свойств и значений Kotlin: сбрасываемый ленивый делегат
Так что я используюkotlin
для андроида и при раздутии просмотров я склонен делать следующее:
private val recyclerView by lazy { find<RecyclerView>(R.id.recyclerView) }
Этот метод будет работать. Тем не менее, есть случай, в котором это будет ошибка приложения. Если это фрагмент, и фрагмент отправляется в backstack,onCreateView
будет вызван снова, и иерархия представления фрагмента будет воссоздана. Это означает, что ленивый инициированный recyclerView укажет на старое представление, которое больше не существует.
Решение таково:
private lateinit var recyclerView: RecyclerView
И инициализировать все свойства внутриonCreateView
.
У меня вопрос, есть ли способ сбросить ленивые свойства, чтобы они могли быть инициализированы снова? Мне нравится тот факт, что все инициализации выполняются в начале класса, помогает поддерживать организованность кода. Конкретная проблема находится в этом вопросе:kotlin фрагмент андроида пустой рециклер вид сзади