У меня есть три фрагмента A, B и C. И я использую контейнер navHostFragment
в MainActivity
. Таким образом, приложение переходит от A до B с использованием kotlin функции расширения findNavController().navigate...
, а затем go от B до C с использованием той же функции. Все работает нормально, пока здесь.
Теперь во фрагменте C я заменяю разные элементы на фрагмент C, используя
activity?.supportFragmentManager
?.beginTransaction()
?.replace(R.id.list_container, someFragment)
?.addToBackStack("some_frag_id")
?.commit()
list_container
заменяется на someFragment
. После этого, когда я нажимаю физическую кнопку возврата, выскакивает фрагмент C, и мое приложение переходит к фрагменту B, в то время как то, что я ожидаю восстановить, заменено list_container
, т.е. все, что было до замены.
Я также перехожу это в моем MainActivity
override fun onBackPressed() {
val count = supportFragmentManager.backStackEntryCount
if (count == 0) {
super.onBackPressed()
//additional code
}
else {
supportFragmentManager.popBackStack()
}
}
Я не уверен, что здесь отсутствует. Я прочитал много решений по stackoverflow, но ни одно из них не удовлетворило меня. Пожалуйста, проведите.