Введение
Общее описание
Структура приложения
Уроки
Описание библиотеки
Внутренние данные библиотеки
Связывание данных
Экраны
Компоненты
Навигация в DePro
Взаимодействие с сервером
Работа с базой данных
Общая информация
Методы
Пуш уведомления
Общая информация
Работа с пушами в DePro
pushNavigator и обработчики
Взаимодействие с сервером
Анимация в DePro
Диалоги
Дополнительные элементы разметки
Общая информация
Calendar
DateDiapason
DrumPicker
ComponEditText
EditTextMask
Gallery
ComponList
PagerIndicator
SheetBottom
ComponSwitch
ComponTextView
Дополнительный материал
Кастомный функционал
Поддержка нескольких языков
Особенности авторизации
Валидация перед отправкой на сервер
Приложения

Навигация в DePro

В навигаторе описываются действия на различные события. Библиотека декларативного программирования DePro обеспечивает возможность реакции на следующие события:

- Действия пользователя (клики на кнопках, выбор пунктов меню и пр.).
- События от сервера (пуши).
- Ответ сервера на запросы приложения (данные или ошибки).
- Ответ вызывающему экрану от вызываемого экрана о завершении своей работы.
- Системные события, в частности событие старта приложения.

Каждое действие описывается обработчиком (handler) - объектом класса ViewHandler. В общем случае любой навигатор представляет собой совокупность обработчиков:

    navigator(handler(...), handler(...), handler(...) ...)

В общем случае обработчик имеет вид:

    handler(viewId, тип обработки, дополнительные параметры)

Здесь: viewId - id элемента разметки при тапе (клике) на который нужно выполнить действия; тип обработки - тип действия, которое необходимо выполнить.

Для некоторых типов действий имеются “персональные” названия обработчика. Например: back(int viewId), start(int viewId, String screen) - при клике на viewId вызывается экран screen. В некоторых случаях событие не может быть првязано к конкретному элементу разметки, например при клике на весь item для RecyclerView, в этом случае viewId нужно задать равным 0 либо вообще пропустить.

Обработчики выполняются в порядке их описания в navigator Поэтому если действия зависят между собой, то их нужно описывать в правильном порядке.

Полный список обработчиков с кратким их описанием приведен в приложении.

Навигатор может относиться к отдельному компоненту, отдельному экрану или к приложению в целом. Кроме того навигатор может относиться к некоторым типам обработчиков. Соответственно и область действия навигаторов будет являться компонент, экран, приложение, или обработчик. Область действия определяется тем к какому компоненту относится элемент разметки на который ссылается обработчик в viewId. Кроме того набор действий для навигаторов различных компонентов и экрана отличаются.

Навигаторы для компонентов указываются четвертым параметром в описании компонента. Навигаторы экранов подключается к экрану как компоненты или дополнительный функционал. Они описываются стандартным образом:

    navigator(handler(...), handler(...), handler(...) ...)

Для экранов предусмотрен навигатор действий при получении пушей. Он описывается следующим образом:

    .pushNavigator(handler(...), handler(...), handler(...) ...)

В нем используются специфические обработчики. Они описаны в разделе "Работа с пушами в DePro". Пример показан в уроке 9.

Навигатор, который относится ко всему приложению, предназначен для установки начальных настроек. Он вызывается при старте приложения и описывается в методе declare класса MyDeclareScreens следующим образом:

    initialSettings(handler(...), handler(...), handler(...) ...);

В настоящее время для навигатора этого типа реализован лишь один тип обработчика: subscribePush(URL_SUBSCRIBE). Здесь URL_SUBSCRIBE адрес для подписки.

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

    after(handler(...), handler(...), handler(...) ...)
и 
    afterError(showDialog, handler(...), handler(...), handler(...) ...)

Здесь showDialog имеет значение true если перед выполнением действий нужно показать диалог об ошибке и равно false в противном случае.



Лучше пакета DePro может быть только искусственный интеллект
Задать вопрос
Отправить вопрос