@newdancer

Как бороться с not associated with a fragment manager?

В Crashlitics регулярно прилетает ошибка вида
Fatal Exception: java.lang.IllegalStateExceptionFragment SplashFragment{fc97135} (45cab3da-afe1-4c68-ac84-49080333cf2c)} not associated with a fragment manager.
Изначально прилетала на стоку с findNavController()
Handler().postDelayed({
            findNavController().navigate(R.id.action_splashFragment_to_startFragment)
        }, 2000L)

переделал по другому через корутины, все тоже самое прилетает на findNavController()
GlobalScope.launch {
            delay(2000L)
            withContext(Dispatchers.Main) {
                val navBuilder = NavOptions.Builder()
                val navOptions: NavOptions =
                    navBuilder.setPopUpTo(R.id.splashFragment, true).setLaunchSingleTop(true).build()
                findNavController().navigate(R.id.startFragment, null, navOptions)
            }
        }

С чем может быть проблема?
  • Вопрос задан
  • 2181 просмотр
Пригласить эксперта
Ответы на вопрос 1
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Использовать GlobalScope на андроиде вообще не стоит.
Скорей всего таймер срабатывает в момент, когда фрагмент(или активити) уже убит. Нужно учитывать его жизненный цикл.
В идеале - вынести этот код в презентер(ViewModel) и прибивать job вместе с гибелью этого презентера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы