Афоризм
Я не навижу власть и деньги когда они в чужих руках.
Последние статьи

 • Активности Android
Многоэкранные Android приложения
 • Fragment dynamic
Динамическая загрузка фрагментов в Android
 • Fragment lifecycle
Жизненный цикл Fragment'ов в Android
 • Fragment example
Пример Fragment'ов в Android
 • Data Binding
Описание и пример Data Binding
 • Пример MVVM
Пример использования MVVM в Android
 • Компонент TreeTable
Описание компонента TreeTable для Swing
 • Пример TreeTable
Пример использования TreeTable
 • Хранилища Android
Внутренние и внешние хранилища данных
 • Пример SQLite
Пример использования SQLite в Android
 • WebSocket
Описание и пример реализации WebSocket
 • Визуальные компоненты
Улучшен компонент выбора даты из календаря
 • Анимация jQuery
Описание и примеры анимации элементов DOM
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698

Жизненный цикл фрагментов

Fragment имеет свой жизненный цикл, во многом совпадающий с жизненным циклом активности. Это, пожалуй, единственное сходство с активностью, которое рассмотривается здесь.

На следующем рисунке представлен процесс загрузки статического фрагмента в интерфейс активности. Сразу же, после начала формирования интерфейса активности (onCreate) выполняется присоединение фрагмента и начинается формирование его интерфейса. На 7-ом шаге вызывается метод активности onStart и следом одноименный метод фрагмента. При завершении старта вызываются методы onResume активности и фрагмента. В рассмотренном примере наглядно демонстрируется данные этапы жизненного цикла фрагмента.

Жизненный цикл фрагмента android-fragment

Фрагмент может быть загружен не только статически, но и динамически. В этом случае связь жизненных циклов активности и фрагмента не будет столь взаимосвязанной. На следующем рисунке представлена общая структура жизненного цикла фрагментов. В левой колонке представлены этапы жизненного цикла фрагмента. В центральной колонке callback-методы обратного вызова. В правой колонке состояния интерфейсных компонентов View фрагмента.

Жизненный цикл фрагмента android-fragment

Каждый этап жизненного цикла фрагмента описывается одной из констант перечисления Lifecycle.State :

  • INITIALIZED
  • CREATED
  • STARTED
  • RESUMED
  • DESTROYED

На заметку : необходимо отметить, что интерфейс фрагмента (представление) имеет отдельный жизненный цикл.

Этапы жизненного цикла фрагмента

onAttach
Представление фрагмента на этапе создания получает состояние INITIALIZED. На данном этапе фрагмент попадает в FragmentManager, который проводит его по всем этапам жизненного цикла. Как только фрагмент попадает в FragmentManager и прикрепляется к Activity, вызывается метод фрагмента onAttach(). После этого фрагмент переходит в состояние CREATED.

void onAttach(Context context)

Прикрепление фрагмента к Activity позволяет ему получить ссылку на активность уже в методе onAttach, как это продемонстрировано в примере. В дальнейшем можно получить ссылку на Activity вызовом метода getActivity().

onCreate
Это аналог метода активности onCreate; начинается создание фрагмента. В этом методе можно получить ранее сохраненное состояние фрагмента через параметр метода savedInstanceState типа Bundle. Если фрагмент создается первый раз, то этот параметр будет иметь значение null. Данный метод вызывается после вызова соответствующего метода onCreate() у Activity.

void onCreate(Bundle savedInstanceState)

onCreateView
Фрагмент начинает создавать визуальный интерфейс (представление). В этом методе можно выбрать какой именно визуальный интерфейс будет использовать фрагмент. На этом этапе представление фрагмента переходит в состояние INITIALIZED, но сам фрагмент всё ещё находится в состоянии CREATED.

View onCreateView(LayoutInflater  inflater, 
                  ViewGroup       container, 
                  Bundle          savedInstanceState)

Параметры метода onCreateView :

  • LayoutInflater определяет содержимое шаблона layout;
  • ViewGroup определяет контейнер для загрузки в него фрагмента;
  • Bundle представляет состояние фрагмента; если фрагмент загружается в первый раз, то bundle равен null.

Метод onCreateView возвращает созданное с помощью LayoutInflater представление в виде объекта View.

onViewCreated
Метод вызывается после создания представления фрагмента.

void onViewCreated (View view,  
                    Bundle savedInstanceState)

Параметры метода onViewCreated :

  • View – это созданное методом onCreateView представление фрагмента;
  • Bundle – это состояние фрагмента; если фрагмент загружается первый раз, то параметр равен null.

onViewStateRestored
Метод получает состояние интефейса фрагмента. После выполнения данного метода представление фрагмента переходит в состояние CREATED.

void onViewStateRestored (Bundle savedInstanceState)

onStart
При вызове данного метода фрагмент становится видимым, представление переходит в состояние STARTED.

void onStart()

onResume
При вызове метода onResume фрагмент становится активным, с ним можно взаимодействовать. При этом фрагмент и его представление переходят в состояние RESUMED.

void onResume()

onPause
При вызове метода onPause фрагмент продолжает оставаться видимым, но уже не активен; представление переходит в состояние STARTED.

void onPause()

onStop
На этом шаге фрагмент не является видимым и вместе с представлением переходит в состояние CREATED. Cостояние фрагмента можно сохранить с помощью метода onSaveInstanceState(). До версии API 28 onSaveInstanceState() вызывается до метода onStop(). Начиная с версии API 28 — после onStop().

void onStop()

onDestroyView
На этом этапе жизненного цикла уничтожается представление фрагмента, которое переходит в состояние DESTROYED.

onDestroy
При вызове данного метода происходит окончательное уничтожение фрагмента и он переходит в состояние DESTROYED.

onDetach
Метод onDetach() вызывается, когда фрагмент извлекается из FragmentManager и открепляется от класса Activity. Этот метод вызывается после всех остальных методов жизненного цикла.

  Рейтинг@Mail.ru