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