Вступить в клуб →
лёгкаявопросKotlin: классы, коллекции и идиомы

Фрагмент падает с «lateinit property adapter has not been initialized»

class OrdersFragment : Fragment(R.layout.fragment_orders) {
    private lateinit var adapter: OrdersAdapter

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        val cached = viewModel.cachedOrders()
        if (cached.isNotEmpty()) adapter.submitList(cached)
        setupList(view)   // здесь adapter = OrdersAdapter()
    }
}

У новых пользователей экран открывается нормально. У тех, у кого в кэше уже есть заказы, он падает с UninitializedPropertyAccessException. Что происходит?

  • Адаптер читается раньше, чем присвоен
  • lateinit нельзя использовать во фрагменте
  • lateinit-свойство обнуляется при повороте
  • submitList нельзя вызывать до onStart

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела