Skip to content

Latest commit

 

History

History
35 lines (24 loc) · 3.81 KB

File metadata and controls

35 lines (24 loc) · 3.81 KB
События ScreenFragment

Ниже описаны события жизненного цикла фрагмента, на которые можно подписаться в контроллере для реализации необходимой бизнес-логики.

  • InitEvent посылается, когда контроллер фрагмента и все его компоненты, заданные декларативно, созданы, а инжекция зависимостей завершена. Вложенные фрагменты на этом этапе ещё не инициализированы. Некоторые визуальные компоненты инициализированы не полностью: например, кнопки ещё не связаны с действиями. Если фрагмент подключается к хост-экрану декларативно в XML, данное событие посылается после InitEvent контроллера хоста. В противном случае событие посылается, когда фрагмент подключается к дереву компонентов хост-экрана.

  • AfterInitEvent посылается, когда контроллер фрагмента и все его компоненты, заданные декларативно, созданы, инжекция зависимостей завершена, и все компоненты завершили свою внутреннюю процедуру инициализации. Вложенные фрагменты (при наличии) опубликовали свои события InitEvent и AfterInitEvent. В слушателе этого события можно создавать визуальные компоненты и компоненты данных, а также выполнить дополнительную инициализацию, если она зависит от инициализации вложенных фрагментов.

  • AttachEvent посылается после того, как фрагмент добавлен к дереву компонентов хост-экрана. В этот момент фрагмент полностью инициализирован, события InitEvent и AfterInitEvent отосланы. В слушателе данного события можно обращаться к хост-экрану, используя методы getHostScreen() и getHostController().

  • DetachEvent посылается после того, как фрагмент удален из дерева компонентов хост-экрана. В слушателе данного события нельзя обращаться к хост-экрану.

Пример подписки на события фрагмента:

link:../../../../../../source/gui/screens/screenFragment_events_1.java[role=include]

В контроллере фрагмента можно также подписаться на события включающего экрана путем указания значения PARENT_CONTROLLER в атрибуте target аннотации, например:

link:../../../../../../source/gui/screens/fragment_screen_events_1.java[role=include]

Таким способом можно обработать любое событие, в том числе InitEntityEvent, посылаемое экранами редактирования.