Я не слишком уверен, что это сработает, но не могу комментировать, так как мой представитель недостаточно высок. Вы можете создать фрагменты лениво и держать ссылку:
private val profileFragment: ProfileFragment by lazy {
ProfileFragment()
}
Потому что в данный момент вы создаете новый экземпляр каждый раз, когда заменяете содержимое. Это означает, что ваша замена будет выглядеть так:
supportFragmentManager.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.replace(R.id.frame, profileFragment)
.commit()