FragmentTransaction hide/show doesn’t work sometimes
You need to reuse the same instance of a fragment that you wanted to hide or show. private fun replaceFragment(fragment: Fragment) { supportFragmentManager.beginTransaction().apply { if (fragment.isAdded) { show(fragment) } else { add(R.id.fmFragmentContainer, fragment) } supportFragmentManager.fragments.forEach { if (it != fragment && it.isAdded) { hide(it) } } }.commit() }