410013796724260
• Webmoney
R335386147728
Z369087728698
Вернуться к «Разработчикам Android»
Жизненный цикл фрагментовFragment имеет свой жизненный цикл, во многом совпадающий с жизненным циклом активности. Это, пожалуй, единственное сходство с активностью, которое рассмотривается здесь. На следующем рисунке представлен процесс загрузки статического фрагмента в интерфейс активности. Сразу же, после начала формирования интерфейса активности (onCreate) выполняется присоединение фрагмента и начинается формирование его интерфейса. На 7-ом шаге вызывается метод активности onStart и следом одноименный метод фрагмента. При завершении старта вызываются методы onResume активности и фрагмента. В рассмотренном примере наглядно демонстрируется данные этапы жизненного цикла фрагмента. ![]() Фрагмент может быть загружен не только статически, но и динамически. В этом случае связь жизненных циклов активности и фрагмента не будет столь взаимосвязанной. На следующем рисунке представлена общая структура жизненного цикла фрагментов. В левой колонке представлены этапы жизненного цикла фрагмента. В центральной колонке callback-методы обратного вызова. В правой колонке состояния интерфейсных компонентов View фрагмента. ![]() Каждый этап жизненного цикла фрагмента описывается одной из констант перечисления Lifecycle.State :
На заметку : необходимо отметить, что интерфейс фрагмента (представление) имеет отдельный жизненный цикл. Этапы жизненного цикла фрагмента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 :
Метод onCreateView возвращает созданное с помощью LayoutInflater представление в виде объекта View. onViewCreated Метод вызывается после создания представления фрагмента. void onViewCreated (View view, Bundle savedInstanceState) Параметры метода onViewCreated :
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. Этот метод вызывается после всех остальных методов жизненного цикла. |