В моем приложении есть несколько фрагментов, которые являются моими страницами, в своих фрагментах я ссылаюсь на представление XML с помощью viewBinding< /code> вот так:
Код: Выделить всё
private var binding: MyFragmentBinding by autoCleared()
Код: Выделить всё
FATAL EXCEPTION: main (Ask Gemini)
Process: fr.trecobat.brick, PID: 6594
java.lang.IllegalStateException: should never call auto-cleared-value get when it might not be available
at fr.trecobat.brick.utils.AutoClearedValue.getValue(AutoClearedValue.kt:32)
fr.trecobat.brick.ui.itineraire_chantiers.ItineraireChantiersFragment.getBinding(ItineraireChantiersFragment.kt:198)
Точно так же, если я рассылаю спам на телефон кнопку назад, думаю, что предыдущий фрагмент не успевает загрузиться и возвращаюсь к предыдущему фрагменту, поэтому приложение вылетает с такой ошибкой:
Код: Выделить всё
FATAL EXCEPTION: main (Ask Gemini)
Process: fr.trecobat.brick, PID: 26518
java.lang.IllegalArgumentException: Navigation action/destination fr.trecobat.brick:id/action_tourneeFragment_to_selectionChantierFragment cannot be found from the current destination Destination(fr.trecobat.brick:id/selectionChantierFragment) label=SelectionChantierFragment class=fr.trecobat.brick.ui.selection_chantier.SelectionChantierFragment
at fr.trecobat.brick.ui.tournee.TourneeFragment$onViewCreated$3.handleOnBackPressed(TourneeFragment.kt:176)
Я заменил строку, которая автоматически очищает привязку, на эту:
Код: Выделить всё
private var binding: MyFragmentBinding by notNull()
Для второго варианта в моем onBackPressedDispatcher< /code> Я установил таймер:
Код: Выделить всё
requireActivity().onBackPressedDispatcher.addCallback(
viewLifecycleOwner,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (canNavigate) {
canNavigate = false
handler.postDelayed({ canNavigate = true }, 300) // 300ms
findNavController().navigate(
R.id.action_itineraireChantiersFragment_to_tourneeAffairesFragment,
bundleOf(
"touId" to touId,
)
)
}else{
Timber.e("Stop back")
}
}
}
)
Есть ли у вас лучшие решения моих проблем?
Подробнее здесь: https://stackoverflow.com/questions/787 ... -fragments