Ответ
- FragmentTransaction – базовый способ через
replace(),add(),remove().
supportFragmentManager.beginTransaction()
.replace(R.id.container, NewFragment())
.addToBackStack(null)
.commit()
- Navigation Component – декларативный подход с графом навигации.
findNavController().navigate(R.id.action_to_new_fragment)
-
ViewPager2 – для горизонтальных переходов (например, onboarding).
-
DialogFragment – для модальных окон поверх текущего фрагмента.
Нюансы:
replace()уничтожает предыдущий фрагмент,add()добавляет поверх.addToBackStack()сохраняет историю для кнопки "назад".- Для передачи данных между фрагментами используйте
SafeArgs(в Navigation) илиViewModel.
Пример с анимацией:
setCustomAnimations(
R.anim.slide_in,
R.anim.fade_out,
R.anim.fade_in,
R.anim.slide_out
)