Я загружаю фрагмент при использовании компонента Navigation
с этим кодом, и он работает.
findNavController().navigate(R.id.menu_nav_graph, bundleOf("menuItem" to item))
Я хочу закрыть фрагмент при нажатии кнопки, и я использую этот код для этого
findNavController().popBackStack()
Приложение переходит к предыдущему фрагменту, но когда я снова пытаюсь перейти к назначенному фрагменту с кодом выше, приложение достигает кода, и ничего не происходит. Фрагмент не загружается. Таким образом, код навигации выполняется, но фрагмент не открывается. То же самое происходит, когда вместо использования popBackStack
я использую это с прослушивателем onClick
activity?.onBackPressed()
Тот же эффект, приложение достигает строки навигации, сбоев нет, исключений не возникает, просто не открывается фрагмент.
В то же время у меня работает навигация со стрелкой назад, и она несколько раз переходит в одно и то же место назначения после возврата из фрагмента. Это меня смущает, поскольку я использую тот же код в onOptionsItemSelected
, и он работает, поэтому я не понимаю, что отличает его, когда я просто вызываю onBackPressed()
нажатием кнопки.
override fun onOptionsItemSelected(item: MenuItem): Boolean =
when (item.itemId) {
android.R.id.home -> {
activity?.onBackPressed()
true
}
else -> super.onOptionsItemSelected(item)
}
Как закрыть фрагмент нажатием кнопки и получить возможность последовательно перейти к тому же месту назначения?
findNavController().navigate(R.id.menu_nav_graph, bundleOf("menuItem" to item))
не работает после возврата из предыдущего фрагмента? - person John Joe   schedule 14.10.2019