Эта история для тех, кто еще не знаком с компонентом навигации.
Здесь мы пройдемся по основным элементам библиотеки и посмотрим, как все это выглядит. Сейчас вы находитесь в первой части большого материала о Компоненте навигации в многомодульном проекте.
Если вы уже знакомы с основами, то рекомендую перейти к частям:
- Как работает плагин Safe Args и что он делает .
- Работа с компонентом навигации в многомодульном проекте совместно с SafeArgs .
- Решение для iOS-подобной многостековой навигации
- Создать график;
- Добавьте к нему экраны;
- Добавьте переходы между ними;
- При необходимости добавьте вложенные графики;
- Поместите весь этот хаос в NavHost;
- Укажите переходы в коде.
Основные компоненты навигации
1. Граф навигации — основная единица навигации.
Это граф, вершины которого — экраны, а ребра — переходы между ними.
График создается в отдельном XML-файле в папке res/navigation. Чтобы не ввести navController в заблуждение, нужно в столбце указать его начальную точку (startDestination) 2. Назначение представляет собой единицу пользовательского интерфейса на графике (Fragment/Activity/Dialog/NestedGraph).
3. Действие обозначает переход между пунктами назначения графа.
Он может быть как направленным (с одного экрана на другой), так и глобальным (не иметь вершины, из которой происходит переход).
4. Вложенный граф — это вложенный граф.
Если один график мал или очень велик, вы можете разделить его на несколько и повторно использовать один график в другом, используя команду ярлык.
5. NavHost — контейнер, в котором будет происходить навигация.
Для корректной работы нужно указать контейнеру, что это NavHostFragment и передать граф навигации.
Это выглядит так:
6. NavController — объект, отвечающий за навигацию.<androidx.fragment.app.FragmentContainerView android:id="@+id/navHost" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" app:defaultNavHost="true" app:navGraph="@navigation/nav_main" />
Оно появится далее в пункте о переходах.
По сути, NavController — это маршрутизатор, с помощью которого мы можем перемещаться между экранами, отправлять параметры, задавать дополнительные параметры перехода, анимацию, общие элементы и т. д.
Переходы между экранами
Переходы между экранами можно осуществлять через Action или DeepLink. Переход с помощью действия На что это похоже: <action
android:id=”@+id/action_to_user_details”
app:destination=”@id/userDetailsFragment”
app:enterAnim=”@anim/add_fragment_animation”
app:exitAnim=”@anim/pop_fragment_animation”
app:popEnterAnim=”@anim/pop_enter_animation”
app:popExitAnim=”@anim/pop_exit_animation”>
Переход вызова:
navController.navigate(
R.id.action_to_user_details,
Bundle().
apply {putString(USER_ID, userId)}
)
Получение аргументов на «другом конце»:
private val userID by lazy {
arguments!![USER_ID]
}
Переход с использованием глубокой ссылки На что это похоже:
<deepLink
app:uri=”app://customUriЭparameter={parameterName }”
/>
Переход вызова:
navController.navigate(
Uri.parse(“ app://customUriЭparameter=$reason ”)
)
Получение аргументов на «другом конце»:
private val refundId by lazy {
arguments?.
getString(“parameter”, null)
}
Вот и все! Довольно просто и понятно — вот что делает компонент навигации таким привлекательным.
Теперь давайте углубимся в как работает плагин Safe Args и что он делает и давайте начнем работа с компонентом навигации в многомодульном проекте совместно с SafeArgs И Многостековая навигация в стиле iOS .
Теги: #Android #Разработка Android #Разработка мобильных приложений #компонент навигации #навигация для Android
-
Ext Js — Ajax Framework
19 Oct, 24 -
Devfest Калининград-2015: Фотоотчет
19 Oct, 24 -
Обсуждения На Тему «Macbook Touch»
19 Oct, 24 -
Проверяем Ошибки
19 Oct, 24 -
Невский Экспресс – Терроризм Или Халатность?
19 Oct, 24 -
Системы Контроля Версий: Fossil, Часть Ii
19 Oct, 24 -
Хабрафутбол: Играем Завтра
19 Oct, 24