Почему удобнее использовать фрагменты вместо множества Activity

Ответ

Фрагменты позволяют создавать модульные и переиспользуемые UI-компоненты, которые можно комбинировать в одной Activity. Это упрощает поддержку кода, особенно для адаптивных интерфейсов (например, планшетов и телефонов). Также фрагменты экономят ресурсы, так как переключение между ними легче, чем запуск новых Activity.

Пример:

supportFragmentManager.beginTransaction()
    .replace(R.id.container, MyFragment())
    .commit()

Преимущества:

  • Гибкость: можно менять компоновку фрагментов динамически
  • Backstack: управление стэком навигации через FragmentManager
  • Жизненный цикл: проще управлять, чем у нескольких Activity

Ответ 18+ 🔞

А, фрагменты! Ну это ж классика, ебать мои старые костыли. Смотри, представь себе такую картину: раньше, в дремучие времена, мы на каждую мелочь в приложении создавали новую Activity. Это как если бы ты для каждой комнаты в квартире строил отдельный дом — ресурсов жрёт овердохуища, переключаться между ними — та ещё песня, а про то, чтобы на планшете две штуки рядом показать, вообще молчу.

А фрагменты — это как разумные модульные блоки. Как конструктор Лего, ёпта. Берёшь один фрагмент — это менюшка. Берёшь второй — это контент. И ты можешь их комбинировать как душе угодно. На телефоне показываешь их по очереди, а на планшете — раз! — и впихиваешь оба на один экран. Гибкость просто пиздец.

И самое главное — они легковесные. Не надо каждый раз всю операционную систему грузить, как с Activity. Всё происходит внутри одной главной Activity, как в большой комнате с перегородками. Хочешь поменять вид — просто меняешь один фрагмент на другой. Делов-то:

supportFragmentManager.beginTransaction()
    .replace(R.id.container, MyFragment())
    .commit()

Вот и вся магия. Сделал — и у тебя на экране новый кусок интерфейса, а старый — накрылся медным тазом (или в стек ушёл, если добавил, а не заменил).

И какие же у этого дела плюсы, спросишь ты?

  • Гибкость, блядь: Динамически всё можно перекраивать. На маленьком экране — одно, на большом — другое. Никаких костылей.
  • Backstack — стэк навигации: Можно фрагменты в стек пихать, и когда юзер тыкнет «назад», он вернётся к предыдущему. Управляется это всё через FragmentManager, который, в принципе, не такой уж и страшный, если разобраться.
  • Жизненный цикл: У фрагмента свой жизненный цикл есть, но он вписан в цикл Activity. В итоге управлять поведением одного маленького куска UI проще, чем городить кучу отдельных Activity и следить, чтобы они друг другу мозги не вынесли.

Короче, если не хочешь, чтобы твоё приложение было монолитом, который только бензин хавает и тормозит — учись фрагменты использовать. Это уже давно не хайп, а must have, чувак.