Я загружаю фрагмент при использовании компонента 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)
}
Как закрыть фрагмент при нажатии кнопки и, следовательно, иметь возможность перемещаться к тому же пункту назначения?