Мой Navigation
график имеет два пункта назначения: Fragment
и DialogFragment
.Fragment
содержит Button
, который при нажатии нажимает на DialogFragment
.
Все работает как положено, , за исключением , если я нажимаю кнопку очень быстро.Это может вызвать
IllegalArgumentException: назначение навигации com.example.app:id/show_dialog неизвестно этому NavController
Чтобы исправить это, я гарантирую, что текущийпункт назначения - Fragment
, содержащий действие show_dialog
:
val navController = findNavController()
val currentDest = navController.currentDestination?.id
if (currentDest == R.id.test_fragment) {
navController.navigate(TestFragmentDirections.showDialog())
}
Похоже, что внесение этого изменения устранит проблему.Однако я хотел бы знать:
Почему необходимо обернуть вызов navigate
условным оператором в этой ситуации?