Android Fragment
Фрагменты являются частью активности, что делает её дизайн более модульным. Мы можем рассматривать фрагмент как подактивность.
Ниже приведены важные моменты о фрагментах:
- Фрагмент имеет собственный макет, собственное поведение и собственные обратные вызовы жизненного цикла.
- Пока активность работает, вы можете добавлять или удалять фрагменты в активности.
- Вы можете объединять несколько фрагментов в одной активности, чтобы создать многопанельный пользовательский интерфейс.
- Фрагмент может использоваться в нескольких активностях.
- Жизненный цикл фрагмента тесно связан с его хост-активностью. Это означает, что когда активность приостановлена, все фрагменты в активности останавливаются.
- Фрагмент может реализовывать поведение, не имея компонентов пользовательского интерфейса.
- Фрагменты были добавлены в Android API в версии Android API 11.
Создайте фрагмент, расширив класс Fragment. Это можно сделать с помощью
До появления фрагментов у нас было ограничение: на экране в любой момент времени могла отображаться только одна Activity. Мы не могли разделить экран устройства и независимо управлять разными частями. С появлением фрагментов мы получили большую гибкость, и ограничение, связанное с возможностью иметь только одну Activity на экране одновременно, было снято. Теперь у нас может быть одна Activity, но каждая Activity состоит из нескольких фрагментов, каждый со своим макетом, событиями и полным жизненным циклом.
Ниже приведён типичный пример, демонстрирующий, как два модуля пользовательского интерфейса, определённые фрагментами, могут быть объединены в Activity, предназначенной для планшетов, и разделены в Activity, предназначенной для портативных устройств.

При работе на устройстве размером с планшет это приложение может встраивать два фрагмента в Activity A. На экране телефона, поскольку недостаточно места, Activity A содержит только фрагмент со списком статей. Когда пользователь нажимает на статью, запускается Activity B, содержащая второй фрагмент, для чтения статьи.
Жизненный цикл фрагмента
Android-фрагменты имеют собственный жизненный цикл, очень похожий на жизненный цикл Android Activity. Ниже приведено краткое введение в различные этапы жизненного цикла.

Ниже приведён список методов, которые можно переопределить в классе Fragment:
- onAttach(): экземпляр фрагмента связывается с экземпляром Activity. Фрагмент и Activity ещё не полностью инициализированы. Обычно в этом методе вы получаете ссылку на Activity, которая будет использоваться в дальнейшей инициализации фрагмента.
- onCreate(): Система вызывает этот метод при создании фрагмента. Вам нужно инициализировать некоторые необходимые компоненты фрагмента. Эти компоненты должны сохраняться при приостановке или остановке фрагмента, чтобы их можно было восстановить.
- onCreateView(): Система вызывает этот метод, когда фрагмент собирается впервые отрисовать свой пользовательский интерфейс. Чтобы отрисовать UI фрагмента, вы должны вернуть из этого метода компонент View, представляющий корневой макет фрагмента. Если фрагмент не предоставляет пользовательский интерфейс, просто верните null.
- onActivityCreated: Этот метод вызывается после метода onCreateView(), когда хост-активность создана. Экземпляры активности и фрагмента, а также иерархия представлений активности созданы. На этом этапе к представлениям можно получить доступ через метод findViewById(). В этом методе вы можете создавать экземпляры объектов, которым требуется объект Context.
- onStart(): Этот метод вызывается, когда фрагмент становится видимым.
- onResume(): Этот метод вызывается, когда фрагмент становится интерактивным.
- onPause(): Система вызывает этот метод, когда впервые сообщает, что пользователь собирается покинуть фрагмент. Обычно здесь нужно зафиксировать все постоянные изменения, выходящие за пределы сеанса пользователя.
- onStop(): Вызывается, когда фрагмент вот-вот будет остановлен.
- onDestroyView(): После вызова этого метода фрагмент собирается быть уничтоженным.
- onDestroy(): Этот метод используется для очистки состояния фрагмента. Однако на платформе Android его вызов не гарантируется.
Как использовать фрагменты?
Вот простые шаги для создания фрагмента.
- Сначала решите, сколько фрагментов нужно в активности. Например, нам нужно использовать два фрагмента, чтобы обрабатывать как альбомный, так и портретный режимы устройства.
- Далее, в зависимости от количества фрагментов, создайте класс, расширяющий класс Fragment. Класс Fragment содержит упомянутые выше методы обратного вызова. Переопределите любые методы в соответствии с вашими потребностями.
- Для каждого фрагмента необходимо создать макеты в XML-файлах. Эти файлы содержат макеты определённых фрагментов.
- Наконец, измените файл активности в соответствии с требованиями, чтобы определить фактическую логику замены фрагментов.
Типы фрагментов
Базовые фрагменты можно разделить на следующие три типа:
- Однофреймовый фрагмент- Однофреймовые фрагменты используются портативными устройствами, такими как мобильные телефоны. Фрагмент отображается как видео.
- Фрагмент списка- Фрагмент, содержащий специальное представление списка, называется фрагментом списка.
- Переход между фрагментами- Используется с транзакциями фрагментов. Вы можете переходить от одного фрагмента к другому.