Навигация
androidx.навигация
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
|---|---|---|---|---|
| 24 сентября 2025 г. | 2.9.5 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от Navigation, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
классный
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.5" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Котлин
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.5" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Безопасные аргументы
Чтобы добавить Safe Args в свой проект, включите следующий classpath в файл build.gradle верхнего уровня:
классный
buildscript { repositories { google() } dependencies { def nav_version = "2.9.5" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Котлин
buildscript { repositories { google() } dependencies { val nav_version = "2.9.5" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Вам также необходимо применить один из двух доступных плагинов.
Чтобы сгенерировать код языка Java, подходящий для Java или смешанных модулей Java и Kotlin, добавьте эту строку в файл build.gradle вашего приложения или модуля :
классный
plugins { id 'androidx.navigation.safeargs' }
Котлин
plugins { id("androidx.navigation.safeargs") }
В качестве альтернативы, чтобы сгенерировать код Kotlin, подходящий для модулей только Kotlin, добавьте:
классный
plugins { id 'androidx.navigation.safeargs.kotlin' }
Котлин
plugins { id("androidx.navigation.safeargs.kotlin") }
У вас должно быть android.useAndroidX=true в файле gradle.properties в соответствии с переходом на AndroidX .
Информацию об использовании расширений Kotlin см. в документации ktx .
Дополнительную информацию о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.
Более подробную информацию см. в документации по системе отслеживания проблем .
Версия 2.9
Версия 2.9.5
24 сентября 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.5 . Версия 2.9.5 содержит следующие изменения .
Исправления ошибок
- Navigation Safe Args теперь может обрабатывать поддержку AGP 9.0 для встроенного Kotlin. ( I1d9d76 )
Обновление зависимостей
- Плагин Navigation Safe Args теперь зависит от версии плагина Android Gradle 8.4.2. ( b/431847270 , I5932a )
Версия 2.9.4
10 сентября 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.4 . Версия 2.9.4 содержит следующие изменения .
Исправления ошибок
- Предотвращение сбоя при возникновении прогнозируемого обратного события в середине кадра после отключения обработчика при переходе
NavHost. ( I5667c , b/384186542 )
Версия 2.9.3
30 июля 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.3 . Версия 2.9.3 содержит следующие изменения .
Исправления ошибок
- Исправлена ошибка в
NavController, которая вызывала исключениеConcurrentModificationExceptionпри использованииOnDestinationChangedListeners. ( If7406 , b/417784831 ) - Исправлена ошибка при использовании
navigate(uri, navOptions,navigationExtras)из-за которой игнорировались дополнительные данные. ( I67fb7 , b/430336813 )
Версия 2.9.2
16 июля 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.2 . Версия 2.9.2 содержит следующие коммиты .
Исправления ошибок
- Исправлена проблема, из-за которой запись не возобновлялась при закрытии диалогового окна над записью ( Idb20e , b/418746335 ).
- Исправлена ошибка
MissingFieldExceptionпри тестированииSavedStateHandleс безопасными маршрутами при использовании пользовательскихNavTypes. ( I2f843 , b/421002511 )
Версия 2.9.1
2 июля 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.1 . Версия 2.9.1 содержит следующие изменения .
Исправления ошибок
- Исправлена ошибка, из-за которой
NavEntries, созданные с использованием единственной вершины, никогда не выходили за пределы CREATED в своемLifecycle.State. ( I043ba , b/421095236 )
Версия 2.9.0
7 мая 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.0 . Версия 2.9.0 содержит следующие изменения .
Важные изменения по сравнению с версией 2.8.0
- Действия Navigation Safe Args теперь генерируются с аннотацией
@CheckResult, чтобы гарантировать их использование.
Интерфейс SupportingPane
- Пользовательские навигаторы теперь могут отмечать свои пункты назначения как реализующие интерфейс
SupportingPane, который указываетNavController, что эти пункты назначения будут отображаться рядом с другими пунктами назначения. Например, с помощью этого интерфейса можно одновременноRESUMEDнесколько пунктов назначения.
Составьте Kotlin Multiplatform
- В навигации теперь доступна новая общая функция
NavController.handleDeepLink(), которая принимаетNavDeepLinkRequestвместоIntent. Это позволяет платформам, отличным от Android, корректно обрабатывать глубокие ссылки. Спасибо, Константин Цховребов! - В навигации теперь доступен
NavUri— новая функция парсера, совместимая с API для URI Android на других платформах. Это позволяет создавать URI независимо от платформы. Спасибо, Константин Цховребов!
Типобезопасные функции
- API-интерфейсы с безопасными типами, которые ранее были доступны только через
reifiedметоды, например,composable<YourScreen>теперь имеют не овеществленные версии, которые напрямую принимают экземплярKClass. - Безопасность типов навигации теперь поддерживает классы значений в качестве маршрута или типа аргумента маршрута.
Версия 2.9.0-rc01
23 апреля 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.0-rc01 . Версия 2.9.0-rc01 содержит следующие изменения .
Исправления ошибок
- Удалены все платформы, не относящиеся к Android, из Jetpack Navigation, поскольку они фактически не работают. Вместо них теперь предоставлены заглушки для разных платформ. ( I2877d )
Версия 2.9.0-beta01
9 апреля 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.0-beta01 . Версия 2.9.0-beta01 содержит следующие изменения .
Изменения API
- Общий API
parseStringAsNavUriбыл изменен на функцию фабрикиNavUri, которая принимает строку. ( I4db6e , b/403616316 )
Обновления зависимостей
- Эта библиотека теперь ориентирована на уровень языка Kotlin 2.0 и требует KGP 2.0.0 или более поздней версии. ( Idb6b5 )
Версия 2.9.0-альфа09
26 марта 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.0-alpha09 . Версия 2.9.0-alpha09 содержит следующие изменения .
Новые функции
- Модуль
navigation-testingтеперь поддерживается на настольных компьютерах, Linux, macOS и iOS в дополнение к Android. ( I2b770 , b/398265336 ) -
NavTypeтеперь поддерживается на настольных компьютерах, Linux, macOS и iOS, в дополнение к Android. ( I297d8 )
Версия 2.9.0-альфа08
12 марта 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.0-alpha08 . Версия 2.9.0-alpha08 содержит следующие изменения .
Исправления ошибок
- В версии навигации
2.8.9: исправлена регрессия, обнаруженная в версии навигации 2.8.8 , из-за которой для признания соответствия глубинной ссылке требовалось полное совпадение всех полей запроса или намерения глубинной ссылки. Это приводило к тому, что глубинные ссылки, содержащие частичное совпадение полей и не содержащие других, переставали работать. ( Ie5e36 , b/399826566 )
Внешний вклад
- Новая функция общего парсера для создания
NavUri. Спасибо, Константин Цховребов! ( If0a6a )
Версия 2.9.0-альфа07
26 февраля 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.0-alpha07 . Версия 2.9.0-alpha07 содержит следующие изменения .
Исправления ошибок
- Исправлена ошибка, из-за которой попытка
saveStateс неинклюзивным pop приводила к нулевому сохраненному состоянию, что могло вызвать сбой при восстановлении. ( I9f3e8 , b/395091644 ) - Начиная с версии Navigation 2.8.8 : исправлено сопоставление
NavDeepLink, при котором deeplink и запрос deeplink должны полностью совпадать по URI, действию и MIME. Сопоставление больше не допускается, если совпадает только одно или два поля. ( I3b029 , b/395712033 ) - В версии Navigation 2.8.8 : исправлена ошибка, из-за которой маршруты с путями с подстановочными знаками не совпадали с добавленной глубокой ссылкой ( I7ea92 , b/389970341 ).
Внешний вклад
- Извлеките API навигации (navigation-common), навигации-runtime и навигации-compose) на общую платформу. Спасибо, Константин Цховребов! ( I1e626 , Ica76f , Idf479 )
Известные проблемы
- В связи с работой над решением проблемы b/395712033 , для диплинков ошибочно требуется наличие всех тех же полей, что и в запросе диплинка и/или в
Intent. Диплинки должны соответствовать только имеющимся у них полям, а невключенные поля следует игнорировать. Это было исправлено в более позднем выпуске в рамках обновления b/399826566 .
Версия 2.9.0-альфа06
12 февраля 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.0-alpha06 . Версия 2.9.0-alpha06 содержит следующие коммиты .
Новые функции
- Действия Navigation Safe Args теперь генерируются с аннотацией
@CheckResult, чтобы гарантировать их использование. ( I14d4c , b/356323084 )
Исправления ошибок
- Исправлена ошибка в
NavController, из-за которой состояния backStack неправильно восстанавливались в массив при их сохранении в списке. ( Idfb9b ) - Начиная с версии Navigation
2.8.7: Navigation Safe Args теперь поддерживает составные пункты назначения. ( I35320 , b/362791955 )
Версия 2.9.0-альфа05
29 января 2025 г.
Выпущена androidx.navigation:navigation-*:2.9.0-alpha05 . Версия 2.9.0-alpha05 содержит следующие изменения .
Исправления ошибок
- Исправлена ошибка, вызывавшая неожиданную анимацию масштабирования при использовании Navigation Compose. ( I480f4 , b/353294030 )
- Начиная с версии Navigation
2.8.6: меткиNavDestination, предоставленные через XML, будут анализироваться с помощьюNavType.getдля обеспечения соблюдения пользовательской логикиNavType. ( I7ec2f , b/388100796 ) - Начиная с версии Navigation
2.8.6: при переходе к действию с помощьюdataPatternActivityNavigatorтеперь попытается закодировать значение arg с помощьюNavTypeаргумента. ( I16376 , b/383616432 ) - Начиная с версии Navigation
2.8.5: исправлена ошибка, приводившая к неожиданному масштабированию анимации при использовании Navigation Compose и вызове Navigation в том же кадре, в котором заканчивается текущая анимация. ( I26cb1 , b/353294030 )
Версия 2.9.0-альфа04
11 декабря 2024 г.
Выпущена androidx.navigation:navigation-*:2.9.0-alpha04 . Версия 2.9.0-alpha04 содержит следующие коммиты .
Новые функции
- Типобезопасные API, которые ранее были доступны только через
reifiedметоды, т. е.composable<YourScreen>теперь имеют не овеществленные версии, которые напрямую принимают экземплярKClass. ( Ia7eed , Id2879 , Ibf244 , I17d79 , Id09d2 , I54696 , Ia47be , I93281 , Ic1bf0 , Iba4ee , If56a5 , Icf969 , I67644 , I6f788 , b/382094941 , b/366291612 , b/381938808 )
В таблице ниже представлены API-интерфейсы Reified и KClass.
| овеществленный | KClass |
|---|---|
composable<TestClass> { } | composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) | navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} | dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) | navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) | NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } | NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() | navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) | navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() | navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() | NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } | navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() | NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() | NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() | backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() | savedStateHandle.toRoute(TestClass::class) |
Изменения API
- Специфическая для Kotlin перегрузка
NavGraph.setStartDestinationдля обеспечения безопасности типов скрыта в исходных кодах Java. ( Ic640c , b/364634035 )
Исправления ошибок
- Начиная с версии Navigation
2.8.5: исправлена проблема, из-за которойNavHostмог выдавать исключение внутриPredictiveBackHandler, если стек возвратов опускается до 1 записи и системный возврат запускается в том же кадре. ( I1a429 , b/375343407 ) - Начиная с версии Navigation
2.8.5: исправлено исключениеNavDestinationNullPointerExceptionпри обновленииstartDestinationграфика. ( I99421 , b/361560785 )
Внешний вклад
- Начиная с версии Navigation
2.8.5: безопасность типов навигации теперь поддерживаетList<Enum>как тип аргумента маршрута без необходимости использования дополнительныхNavType. Спасибо, Csaba Kozák ! ( GH-725 , b/375559962 )
Версия 2.9.0-альфа03
13 ноября 2024 г.
Выпущена androidx.navigation:navigation-*:2.9.0-alpha03 . Версия 2.9.0-alpha03 содержит следующие коммиты .
Новые функции
- Безопасность типов навигации теперь поддерживает классы значений в качестве маршрута или типа аргумента маршрута. ( I9344a , b/374347483 )
Исправления ошибок
- Исправлено исключение
ConcurrentModificationException, которое могло возникнуть, когдаLifecycleObserver, прикрепленный кNavBackStackEntry, инициирует изменение в стеке возврата, когда хост-LifecycleOwner, такой как содержащая его Activity или Fragment, изменяет свое состояние жизненного цикла. ( Ia9494 )
Версия 2.9.0-альфа02
30 октября 2024 г.
Выпущена androidx.navigation:navigation-*:2.9.0-alpha02 . Версия 2.9.0-alpha02 содержит следующие коммиты .
Внешний вклад
- Новый общий метод
NavController.handleDeepLink(request: NavDeepLinkRequest). Спасибо, Константин Цховребов! ( I3e228 )
Версия 2.9.0-альфа01
16 октября 2024 г.
Выпущена androidx.navigation:navigation-*:2.9.0-alpha01 . Версия 2.9.0-alpha01 содержит следующие изменения .
Новые функции
- Пользовательские навигаторы теперь могут отмечать свои пункты назначения как реализующие интерфейс
SupportingPane, который указываетNavController, что эти пункты назначения будут отображаться рядом с другими пунктами назначения. Например, с помощью этого интерфейса можно одновременноRESUMEDнесколько пунктов назначения. ( Id5559 ) - Начиная с версии Navigation
2.8.3: добавлены новые проверки lint для модулейnavigation-common,navigation-runtimeиnavigation-compose, помогающие выявлять типобезопасные маршруты, не аннотированные@Serializable. Эта проверка применяется ко всем функциям расширенияNavGraphBuilderиNavDeepLinkBuilder. ( I4a259 , I95402 , Ie601a , Id8c6e , I28bda , b/362725816 ). - Начиная с версии Navigation
2.8.3: добавлены новые проверки lint для модулейnavigation-common,navigation-runtimeиnavigation-compose, помогающие выявлять типобезопасные маршруты с аргументами Enum, которые не аннотированы@Keep. Эта проверка применяется ко всем функциям расширенияNavGraphBuilderиNavDeepLinkBuilder. ( I4a259 , I95402 , Ie601a , Id8c6e , I2b46f , b/358687142 ).
Изменения поведения
- Попытка использовать
NavController, который ранее былDESTROYED, теперь вызовет исключениеIllegalStateException. ( I520da , b/369616172 )
Исправления ошибок
- Обновление исключения «Класс Enum не найден» для предложения использовать аннотацию
@Keepв случае, если класс Enum будет стерт в минимизированных сборках. ( I90e79 , b/358137294 )
Известные проблемы
- Существует проблема с новыми правилами lint, добавленными в
Navigation 2.8.*, которые вызывают ошибкуObsolete custom lint checkпри попытке запустить lint с помощью Android Gradle Plugin 8.4+. ( b/368070326 , b/371463741 )
Версия 2.8
Версия 2.8.9
12 марта 2025 г.
Выпущена androidx.navigation:navigation-*:2.8.9 . Версия 2.8.9 содержит следующие изменения .
Исправления ошибок
- Исправлена регрессия, обнаруженная в версии навигации 2.8.8 , из-за которой для признания соответствия глубинной ссылке требовалось полное совпадение всех полей запроса или намерения глубинной ссылки. Это приводило к тому, что глубинные ссылки, содержащие частичное совпадение полей и не содержащие других, переставали работать. ( Ie5e36 , b/399826566 )
Версия 2.8.8
26 февраля 2025 г.
Выпущена androidx.navigation:navigation-*:2.8.8 . Версия 2.8.8 содержит следующие изменения .
Исправления ошибок
- Исправлена ошибка, из-за которой маршруты с путями с подстановочными знаками не совпадали с добавленной глубокой ссылкой. ( I7ea92 , b/389970341 )
- Исправлено сопоставление
NavDeepLink, при котором deeplink и запрос deeplink должны полностью совпадать по URI, действию и MIME. Сопоставление больше не допускается, если совпадает только одно или два поля. ( I3227f , b/395712033 )
Известные проблемы
- В связи с работой над решением проблемы b/395712033 , для диплинков ошибочно требуется наличие всех тех же полей, что и в запросе диплинка и/или в
Intent. Диплинки должны соответствовать только имеющимся у них полям, а невключенные поля следует игнорировать. Это было исправлено в более позднем выпуске в рамках обновления b/399826566 .
Версия 2.8.7
12 февраля 2025 г.
Выпущена androidx.navigation:navigation-*:2.8.7 . Версия 2.8.7 содержит следующие изменения .
Исправления ошибок
- Navigation Safe Args теперь поддерживает составные пункты назначения. ( I35320 , b/362791955 )
Версия 2.8.6
29 января 2025 г.
Выпущена androidx.navigation:navigation-*:2.8.6 . Версия 2.8.6 содержит следующие коммиты .
Исправления ошибок
- Метки
NavDestination, предоставленные через XML, будут проанализированы с помощьюNavType.get, чтобы гарантировать соблюдение пользовательской логикиNavType. ( Id366d , b/388100796 ) - При переходе к активности с помощью
dataPatternActivityNavigatorтеперь попытается закодировать значение arg с помощьюNavTypeаргумента. ( I1a71d , b/383616432 )
Версия 2.8.5
11 декабря 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.5 . Версия 2.8.5 содержит следующие изменения .
Исправления ошибок
- Исправлена ошибка, из-за которой
NavHostмог выдать исключение внутриPredictiveBackHandler, если стек возвратов опускается до 1 записи и системный возврат запускается в том же кадре. ( I1a429 , b/375343407 ) - Исправлено исключение
NavDestinationNullPointerExceptionпри обновленииstartDestinationграфика. ( I99421 , b/361560785 ) - Исправлена ошибка, вызывавшая непредвиденную анимацию масштабирования при использовании Navigation Compose и вызове Navigation в том же кадре, в котором заканчивается текущая анимация. ( I26cb1 , b/353294030 )
- Исправлено исключение
ConcurrentModificationException, которое могло возникнуть, когдаLifecycleObserver, прикрепленный кNavBackStackEntry, инициирует изменение в стеке возврата, когда хост-LifecycleOwner, такой как содержащая его Activity или Fragment, изменяет свое состояние жизненного цикла. ( Ia9494 )
Внешний вклад
- Безопасность типа навигации теперь поддерживает
List<Enum>как тип аргумента маршрута без необходимости использования дополнительныхNavType. Спасибо , Чаба Козак ! ( GH-725 , b/375559962 )
Версия 2.8.4
13 ноября 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.4 . Версия 2.8.4 содержит следующие коммиты .
Новые функции
- Начиная с версии Navigation
2.9.0-alpha03: безопасность типа Navigation теперь поддерживает класс значений как маршрут или как тип аргумента маршрута ( I9344a , b/374347483 ).
Исправления ошибок
- Начиная с версии Navigation
2.9.0-alpha01: попытка использоватьNavController, который был ранееDESTROYED, теперь вызовет исключениеIllegalStateException. ( I520da , b/369616172 )
Версия 2.8.3
16 октября 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.3 . Версия 2.8.3 содержит следующие изменения .
Новые функции
- Добавлены новые проверки lint для модулей
navigation-common,navigation-runtimeиnavigation-compose, помогающие выявлять типобезопасные маршруты, не аннотированные@Serializable. Эта проверка применяется ко всем функциям расширенияNavGraphBuilderиNavDeepLinkBuilder. ( I4a259 , I95402 , Ie601a , Id8c6e , I28bda , b/362725816 ). - Добавлены новые проверки lint для модулей
navigation-common,navigation-runtimeиnavigation-compose, помогающие выявлять типобезопасные маршруты с аргументами Enum, которые не аннотированы@Keep. Эта проверка применяется ко всем функциям расширенияNavGraphBuilderиNavDeepLinkBuilder. ( I4a259 , I95402 , Ie601a , Id8c6e , I2b46f , b/358687142 ).
Исправления ошибок
- Исправлена ошибка, из-за которой новые правила линтинга, добавленные в
Navigation 2.8.*, вызывали ошибкуObsolete custom lint checkпри попытке запустить линтинг с помощью плагина Android Gradle 8.4+. ( I1be3d , b/368070326 , b/371463741 )
Известные проблемы
- Navigation lint выдаст ошибку Obsolete custom lint check при попытке запустить lint с Lint 16 (AGP 8.7) или выше. ( b/371926651 )
Версия 2.8.2
2 октября 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.2 . Версия 2.8.2 содержит следующие изменения .
Новые функции
- Navigation Type Safety теперь поддерживает сериализуемые классы, включающие
Double,Double?,DoubleArray,DoubleArray?,List<Double>иList<Double>?без необходимости использования каких-либо пользовательскихNavType. ( I570eb , Ibc4c0 , I37461 , I5bed4 , b/359245753 )
Исправления ошибок
- Улучшено сообщение об ошибке, когда Navigation не может сопоставить аргумент маршрута с
NavType. Новое сообщение об ошибке будет содержать имя аргумента, полное имя аргумента и полное имя маршрута. ( Id8416 , b/346264232 )
Версия 2.8.1
18 сентября 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.1 . Версия 2.8.1 содержит следующие коммиты .
Новые функции
- Добавлено новое правило линтинга, гарантирующее использование функции
popBackStack, которая принимает тип конкретизированного класса при попытке вызватьpopBackStackс использованием типобезопасных API. ( Ief161 , b/358095343 )
Исправления ошибок
- Теперь для навигации требуется, чтобы маршрут, переданный в
startDestinationNavGraph, содержал значения всех обязательных аргументов, включая аргументы, которые не могут быть нулевыми и не имеют значений по умолчанию. ( I18e74 , b/362594265 ) - В безопасные аргументы навигации добавлена поддержка строк, не допускающих значение NULL, благодаря чему значения NULL будут обрабатываться и сохраняться в пакете как есть. Это отличается от существующего поведения, при котором значения NULL преобразуются в объект NULL. Данное изменение применяется только к строковым типам, не допускающим значение NULL. Строки, допускающие значение NULL, остаются без изменений. ( I08b4a , b/348936238 )
- Переход по глубинной ссылке на
NavDestinationтеперь возможен только через глубинную ссылку, явно добавленную к пункту назначения. Это также означает, что переход по маршруту к пункту назначения возможен только с помощью перегрузки функции Navigation, принимающей строковый маршрут. Это устраняет уязвимость, позволявшую создавать глубинную ссылку на потенциально защищённый пункт назначения. ( Ie30e6 )
Обновление зависимостей
- Navigation Safe Args теперь зависит от Kotlin 1.9.24, а не от Kotlin 2.X, что гарантирует отсутствие необходимости обновления для разработчиков. ( a4129a )
- Навигация Compose теперь зависит от Compose
1.7.2.
Версия 2.8.0
4 сентября 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0 . Версия 2.8.0 содержит следующие изменения .
Важные изменения по сравнению с версией 2.7.0
Навигация Kotlin DSL Type-Safety
- Навигация теперь обеспечивает типобезопасность для Kotlin DSL (используемого Navigation Compose) с помощью сериализации Kotlin, что позволяет вам определять пункты назначения в вашем навигационном графе с помощью типобезопасных объектов и классов данных:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Дополнительную информацию см. в записи блога Navigation Compose meet Type Safety .
Навигация Составление Предиктивный Назад
- Navigation Compose теперь поддерживает предиктивный возврат в приложении через новые API
SeekableTransitionStateиз compose-animation. Это позволяет использовать жест «Назад» для просмотра предыдущего пункта назначения с вашим пользовательским переходом, прежде чем принять решение о подтверждении транзакции жестом завершения или об отмене.
Навигационный фрагмент компонуется
- Добавлен новый артефакт
navigation-fragment-compose, включающий альтернативуNavHostFragment—ComposableNavHostFragment, позволяющий добавлять компонуемые пункты назначения в XML-файлы навигации. Каждыйcomposableпункт назначения должен быть выражен как метод верхнего уровня@Composableбез аргументов, полное имя которого используется в качестве атрибутаandroid:nameдля каждого пункта назначения. При переходе к одному из этих пунктов назначения создаётся содержащий его фрагмент для отображения компонуемого содержимого.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
Другие изменения
- Навигация Compose теперь зависит от Compose 1.7.0.
- Навигация теперь предоставляет новый класс
CollectionNavType<T>, подклассNavType<T>для аргументов, основанных на коллекциях, таких как списки, массивы и карты. Все массивыNavTypeпо умолчанию (IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeиStringArrayType) теперь наследуются от этого нового класса. -
NavTypeтеперь имеет встроенную поддержку списков Int, String, Boolean, Float и Long.
Версия 2.8.0-rc01
21 августа 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-rc01 . Версия 2.8.0-rc01 содержит следующие изменения .
Исправления ошибок
- Исправлен сбой навигации при передаче классов Enum верхнего уровня в качестве типобезопасных аргументов. ( I0ba76 , b/358137294 )
- Navigation 2.8 теперь корректно работает с SDK 34 и не будет переключена на SDK 35 до выхода версии 2.9 вместе с остальными библиотеками AndroidX. ( b/358798728 )
Версия 2.8.0-beta07
7 августа 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-beta07 . Версия 2.8.0-beta07 содержит следующие изменения .
Известные проблемы
- Из-за обновления b/358137294 изначально поддерживаются только перечисления, вложенные в другие классы. Поддержка перечислений верхнего уровня будет реализована в следующем выпуске.
Исправления ошибок
- При навигации к дублирующимся или общим пунктам назначения навигация будет отдавать приоритет переходу к ближайшему совпадающему пункту назначения от текущего местоположения на графике. ( Ic89a4 , b/352006850 )
- Навигация в безопасных аргументах теперь дополнена новым
NavType.EnumType. Это означает, что для типовEnumбольше не требуются пользовательскиеNavType. Обратите внимание, чтоSerialNameдляEnumдолжно быть полным именем по умолчанию. ( I66d22 , b/346475493 ) - Навигация по безопасным аргументам добавила встроенную поддержку для типов аргументов, допускающих значение NULL, включая
Int?,Long?,Float?,Boolean?иEnum<*>?. ( I32d13 , I1c580 , Ifba66 , I978b0 , Ide076 , b/351994237 ) -
startDestinationобъектаNavGraphтеперь будет использовать значения аргументов по умолчанию, если маршрутstartDestination, переданный вNavGraph, в точности равенstartDestination.route. ( I13762 , b/354046047 )
Версия 2.8.0-beta06
24 июля 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-beta06 . Версия 2.8.0-beta06 содержит следующие изменения .
Исправления ошибок
- Исправлена ошибка, из-за которой проверки lint
WrongStartDestinationTypeне проверяли наличие объектов Companion в переданном типе класса, в результате чего lint не мог обнаружить ошибку. ( I92b09 )
Версия 2.8.0-beta05
10 июля 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-beta05 . Версия 2.8.0-beta05 содержит следующие изменения .
Исправления ошибок
- Исправлен сбой навигации
singleTop, когда вложенныеNavGraphsиспользуют один и тот же маршрутstartDestination. ( I17b94 , b/294408596 )
Версия 2.8.0-beta04
26 июня 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-beta04 . Версия 2.8.0-beta04 содержит следующие изменения .
Исправления ошибок
- Навигация теперь поддерживает навигацию с пустыми строками в аргументах пути. ( Ic5dbd , b/339481310 )
- Улучшить сообщение об ошибке для пользовательских сериализаторов, объявленных непосредственно в полях класса через
@Serializable(with =...)чтобы уточнить, что в настоящее время эта функция не поддерживается. ( I052b0 , b/341319151 ) - Тестовый API
SavedStateHandleFactoryтеперь можно использовать в тестах, не связанных с Android, но для этого потребуется, чтобы Robolectric поддерживал анализ аргументов с помощью Bundles. ( I76cdc , b/340966212 ) - Исправлен сбой, связанный с восстановлением состояния при возобновлении работы приложения после завершения процесса с использованием типобезопасной навигации в Compose. ( Ia8f38 , b/341801005 )
- Исправлена ошибка в Navigation Compose, из-за которой после отмены предиктивного жеста «Назад» элемент
NavBackStackEntry, к которому пользователь возвращается, никогда не возвращается в состояние жизненного циклаRESUMED. Это также обеспечивает корректную анимацию возврата к пункту назначения, а не его закрепление после броска. ( I97a0c , b/346608857 ) - При использовании предиктивного возврата с Navigation Compose выталкиваемый пункт назначения теперь будет иметь правильный z-порядок, корректно анимируясь поверх входящего пункта назначения. ( I2077b , b/345993681 )
Версия 2.8.0-beta03
12 июня 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-beta03 . Версия 2.8.0-beta03 содержит следующие изменения .
Изменения API
- У
CollectionNavTypeпоявился новый абстрактный методemptyCollection(). Переопределите его для обработки пустой коллекции, переданной в качестве аргумента. ( Ie4d84 , b/341723133 )
Исправления ошибок
- Добавлена документация по
NavType.serializeAsValueиserializeAsValues, чтобы подчеркнуть, что конечные выходные данные должны быть закодированы в Uri. ( Ida6bd , b/344943214 ) - Исправлен сбой при вызове
toRoute<T>с аргументомCollectionNavType, равным null. При навигации с аргументомCollectionNavType, равным null, выходным аргументом будет значение по умолчанию, объявленное в классе Serializable, или возвращаемое значениеemptyCollection()если значение по умолчанию отсутствует. ( I84158 , Id630f , b/342672856 )
Версия 2.8.0-beta02
29 мая 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-beta02 . Версия 2.8.0-beta02 содержит следующие изменения .
Исправления ошибок
- Исправлен сбой
ClassCastExceptionпри использованииNavBackStackEntry.toRouteс пользовательским типомNavType, допускающим значение NULL. ( I1c29b , b/342239473 ) - Исправлены проблемы восстановления состояния стека переходов навигации, возникавшие при попытке восстановить запись стека переходов, недоступную по идентификатору из текущего пункта назначения. Поскольку маршруты поддерживаются идентификаторами, пункты назначения, созданные с использованием маршрутов, также были затронуты. Это также устраняет сбой, вызванный вызовом
clearBackStack(), имевшим ту же основную проблему. ( I423c3 , b/339908057 )
Версия 2.8.0-beta01
14 мая 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-beta01 . Версия 2.8.0-beta01 содержит следующие изменения .
Изменения API
-
SavedStateHandle.toRoute()теперь принимает параметрtypeMapдля пользовательских типов аргументов. ( Ie39fb , b/339026523 ) - Добавлен тестовый API для
navigation-testing, позволяющий создатьSavedStateHandleиз сериализуемого объекта Kotlin. ( Id4867 , b/339080702 )
Исправления ошибок
- Добавлены отсутствующие параметры документации для функций Navigation Kotlin DSL. ( I26a36 )
Версия 2.8.0-альфа08
1 мая 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-alpha08 . Версия 2.8.0-alpha08 содержит следующие изменения .
Безопасные аргументы в навигационном компоновщике
- Работа по поддержке безопасности типов во время компиляции для Navigation Compose и пользователей Navigation Kotlin DSL на основе Kotlin Serialization завершена, и ранее экспериментальные API теперь стабильны. ( Iea94d , I0eb0d , I873b7 , I3a64b , I6c3a2 , I11f0b , Ic3032 , I8d394 , I95710 , Ice060 , Id0e55 , I45f8b , Idcdaf , If5380 , I08b23 , Ia5c59 , b/188693139 )
Эта функциональность использует сериализацию Kotlin , чтобы позволить вам определять пункты назначения в вашем навигационном графе с помощью типобезопасных объектов и классов данных:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Дополнительную информацию см. в записи блога Navigation Compose meet Type Safety .
Новые функции
- Артефакт
navigation-fragment-composeтеперь предоставляет композициюLocalFragment, локальную для компонуемых методов внутриComposableFragment. ( If35e5 ) -
NavTypeтеперь имеет встроенную поддержку списков целых чисел, строк, логических значений, чисел с плавающей точкой и длинных чисел. ( I4b6dd , Ia914c , b/188693139 )
Версия 2.8.0-альфа07
17 апреля 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-alpha07 . Версия 2.8.0-alpha07 содержит следующие изменения .
Новые функции
Добавляет новый артефакт
navigation-fragment-compose, включающий альтернативуNavHostFragment—ComposableNavHostFragment, которая позволяет добавлятьcomposableпункты назначения в XML-файлы навигации. Каждыйcomposableпункт назначения должен быть выражен как метод верхнего уровня@Composableбез аргументов, полное имя которого используется в качестве атрибутаandroid:nameдля каждого пункта назначения. При переходе к одному из этих пунктов назначения создается содержащий его фрагмент для отображения компонуемого содержимого. ( I0ef2e , b/265480755 )// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
Изменения API
- Поддержка безопасных аргументов в Navigation Compose с использованием подхода, основанного на сериализации Kotlin, продолжается. Эти API ещё не завершены и отмечены аннотацией
ExperimentalSafeArgsApi. Эта аннотация будет удалена после завершения разработки всего API в будущем выпуске. ( Iefd95 , I409c8 , I5b5ac , I7e753 , I960f8 , I3eabd , I8ed5a , Ied2c9 , I9b73c , I554db , Ib3aba , Ia668d , b/188693139 )
Версия 2.8.0-альфа06
3 апреля 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-alpha06 . Версия 2.8.0-alpha06 содержит следующие коммиты .
Изменения API
- Поддержка безопасных аргументов в Navigation Compose с использованием подхода, основанного на сериализации Kotlin, уже началась. Эти API ещё не завершены и отмечены аннотацией
ExperimentalSafeArgsApi. Эта аннотация будет удалена после завершения разработки всего API в будущем выпуске. ( I644e7 , I98896 , I2a1c5 , I43a51 , I836a1 , Ic5eec , I39407 , I24e41 , If9e14 , Ibb13e , If44d3, Icb70f , I8972f , I1d432 , Icf32b , I20a14 , I262aa , I7de99 , I35990 , I1033d , b/188693139 )
Исправления ошибок
-
NavHostтеперь используетAlignment.TopStartв качестве аргумента contentAlignment по умолчанию. Это соответствует значению по умолчанию дляAnimatedContentи устраняет некоторые случаи неожиданного перехода от центра к масштабу. ( I09e72 , b/330111602 ) - При выполнении предиктивного жеста «Назад» во время использования Navigation Compose
NavHostтеперь будет правильно завершать пользовательский переход, а не завершать его немедленно. ( I99017 , b/327292110 )
Версия 2.8.0-альфа05
20 марта 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-alpha05 . Версия 2.8.0-alpha05 содержит следующие изменения .
Новые функции
- Теперь вы можете передавать аргументы в
startDestinationNavGraphнепосредственно в маршрутеstartDestination, не полагаясь наdefaultValue. Это также относится к вложеннымstartDestinationsNavGraph. ( I0e0b5 , b/109505019 , b/188693139 )
Изменения API
- Добавлен новый абстрактный класс
CollectionNavType<T>, подклассNavType<T>для аргументов на основе коллекций, таких как списки, массивы, карты. ( Ic6d63 , b/188693139 ) - Все массивы
NavTypeпо умолчанию (IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeиStringArrayType) теперь имеют типCollectionNavType( Idcf79 , b/188693139 ) -
NavTypeтеперь предоставляет новый открытый APIvalueEquals, который определяет, равны ли друг другу два значения одного типа. ( I6cb97 , b/327229511 )
Исправления ошибок
- Параметры запроса в глубоких ссылках теперь допускают использование значений в фигурных скобках вокруг имени аргумента (например,
{argName}) в качестве допустимых значений для строковыхNavTypes. Это устраняет проблему, из-за которой такое значение считалось недопустимым (или отсутствовало) для всех типов. ( I18302 , b/327274038 ) - Функции
NavController, поддерживающие маршруты, такие какnavigateилиpopBackStack, теперь могут правильно сопоставлять маршруты, заполненные аргументами массиваNavTypes. ( Iea805 , b/327229511 )
Версия 2.8.0-альфа04
6 марта 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-alpha04 . Версия 2.8.0-alpha04 содержит следующие изменения .
Новые функции
- Теперь вы можете указать
SizeTranformдля ваших переходов в Navigation Compose, определив их как часть инициализации дляcomposableи/илиnavigationфункций. ( I91062 , b/296912651 )
Исправления ошибок
- Исправлена ошибка, из-за которой
NavHostв Compose Navigation не отображал должным образом переход при использовании функции «Назад» без жеста. ( Iceeae , b/325998468 )
Версия 2.8.0-альфа03
21 февраля 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-alpha03 . Версия 2.8.0-alpha03 содержит следующие изменения.
Изменения API
-
NavBackStackEntry.savedStateHandleтеперь помечен как@MainThread, поскольку он использует код, который в любом случае должен находиться в основном потоке. ( Ibb988 , b/299523245 )
Исправления ошибок
- Исправлена ошибка в навигации, из-за которой ViewModels
NavGraphDESTROYEDслишком быстро, посколькуViewModelсоответствующей записи не была частью сохраненного состояния. ( Ib6bb7 , b/317581849 )
Обновление зависимостей
- Навигация Compose теперь зависит от Compose 1.7.0-alpha03 .
Версия 2.8.0-альфа02
7 февраля 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-alpha02 . Версия 2.8.0-alpha02 содержит следующие изменения.
Новые функции
- Navigation Compose теперь поддерживает предиктивный возврат в приложении через новые API
SeekableTransitionStateиз compose-animation. Это позволяет использовать жест «Назад» для просмотра предыдущего пункта назначения с вашим пользовательским переходом, прежде чем принять решение о подтверждении транзакции жестом завершения или об отмене. ( I8b8e9 )
Версия 2.8.0-альфа01
24 января 2024 г.
Выпущена androidx.navigation:navigation-*:2.8.0-alpha01 . Версия 2.8.0-alpha01 содержит следующие изменения.
Исправления ошибок
- Исправлена утечка
BackStackState, из-за которой множественные вызовыsaveStateдля назначения приводили к сохранению нескольких состояний, но восстановить можно было только первое. ( I598b0 , b/309559751 ) - Исправлена ошибка, из-за которой нестроковые аргументы отображались неправильно при использовании помощников
NavigationUIдля заполнения заголовков панелей приложений. ( #636 , b/316676794 )
Обновление зависимостей
- Навигация Compose теперь зависит от Compose
1.7.0-alpha01исправляющего проблему, которая могла приводить к неожиданной анимации масштабирования. ( b/297258205 )
Внешний вклад
- Спасибо SimonMarquis за исправление проблемы с отображением нестроковых аргументов при использовании помощников
NavigationUIдля заполнения заголовков панелей приложений.
Версия 2.7.7
Версия 2.7.7
7 февраля 2024 г.
Выпущена androidx.navigation:navigation-*:2.7.7 . Версия 2.7.7 содержит следующие изменения.
Исправления ошибок
- Перенесено из Navigation
2.8.0-alpha01: исправлена утечкаBackStackState, из-за которой несколько вызововsaveState()для одногоNavBackStackEntryприводили к сохранению нескольких состояний, но восстановить можно было только первое сохраненное состояние. ( I598b0 , b/309559751 ) - Перенесено из Navigation
2.8.0-alpha01: исправлена проблема, из-за которой нестроковые аргументы отображались неправильно при использовании вспомогательных функцийNavigationUIдля заполнения заголовков панелей приложений. ( #636 , b/316676794 )
Внешний вклад
- Спасибо SimonMarquis за исправление проблемы с отображением нестроковых аргументов при использовании помощников
NavigationUIдля заполнения заголовков панелей приложений.
Версия 2.7.6
Версия 2.7.6
13 декабря 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.6 . Версия 2.7.6 содержит эти коммиты.
Исправления ошибок
- Функция
NavGraphequals()теперь корректно учитывает узлы другого графа, а не только вызывающего. Это гарантирует, что графы с узлами с разными идентификаторами больше не будут считаться равными ( I401cb , b/311414915 ).
Версия 2.7.5
Версия 2.7.5
1 ноября 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.5 . Версия 2.7.5 содержит эти коммиты.
Улучшения производительности
- Значительно улучшена производительность (как по времени, так и по количеству выделений) при сравнении двух графиков. Это означает, что такие вызовы, как
setGraph, которые внутренне сравнивают новый граф с существующим, выполняются намного быстрее и приводят к меньшему количеству пропущенных кадров. Спасибо Михалу З за тщательный анализ, который привел к этому улучшению. ( I6ad62 ) -
NavHostтеперь будет отображать начальный пункт назначения на первом проходе композиции вместо того, чтобы ждать второго прохода для чтения обновленного состояния. ( I439a7 , б/304852206 )
Исправления ошибок
- Исправлена проблема, из-за которой ваш задний стек выскакивал, если вы вызывали
setGraphболее одного раза с одним и тем же графом, только если в вашем графике был пункт назначения, содержащий действие, связывающее два пункта назначения. ( Ieaed7 ) - Диалоги, к которым быстро переходили и закрывали, больше не будут просачиваться в список
NavController.visibleEntries. ( I67586 , б / 287969970 ) - Когда запись извлекается с последующим изменением конфигурации,
ViewModelзаписи теперь будет очищаться правильно, еслиsaveStateимеет значение false. ( Idf242 , б/298164648 ) - Исправлена проблема, из-за которой
NavControllerмог обрабатывать одну и ту же глубокую ссылку более одного раза, если задний стек был полностью пуст до изменения конфигурации или вызоваsetGraph, только когда для входящего намерения был установлен флагFLAG_ACTIVITY_NEW_TASK. ( I73c7f )
Обновления зависимостей
- Навигация с помощью фрагментов теперь зависит от Fragment 1.6.2 , что устраняет проблему, из-за которой экземпляры
ViewModelвложенных фрагментов не очищались приclearBackStack.
Версия 2.7.4
Версия 2.7.4
4 октября 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.4 . Версия 2.7.4 содержит эти коммиты.
Новые функции
- Добавлена поддержка
popUpToдля использования маршрутов с аргументами, позволяющих вернуться к определенной записи, которая использует именно эти аргументы, что соответствует поддержке, найденной вpopBackStack. ( I731f4 , б / 299255572 )
Исправления ошибок
- Исправлена проблема, из-за которой прерывание навигации с помощью другой навигации с помощью
popUpToприводило к сбоюFragmentNavigator. ( I3c848 , б/301887045 ) - Исправлена проблема, из-за которой нажатие системы назад приводило к неправильному обновлению
currentDestinationв соответствии с отображаемым фрагментом. ( Id0d6c , б/289877514 ) - Жизненный цикл
DialogFragmentтеперь корректно переходит в состояниеRESUMED, когда диалоговое окно над ним закрывается. ( I88f0d , б/301811387 )
Версия 2.7.3
Версия 2.7.3
20 сентября 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.3 . Версия 2.7.3 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема в навигации с фрагментами, из-за которой список
visibleEntriesсодержал неправильные записи. ( I5caa9 , б / 288520638 ) - Исправлена проблема, из-за которой пункт назначения плавающего окна (т. е.
Dialogs,Bottomsheetsи т. д.) никогда не получал обратный вызовRESUMEDLifecycle. ( I3b866 , б / 287505132 )
Версия 2.7.2
Версия 2.7.2
6 сентября 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.2 . Версия 2.7.2 содержит эти коммиты.
Исправления ошибок
- Навигация теперь зависит от жизненного цикла
2.6.2, исправляя взаимодействие междуrememberSaveableиNavHostNavigation Compose, которое могло привести к тому, что состояниеrememberSaveableпунктов назначения и любые экземплярыSavedStateHandle, принадлежащиеViewModel, не будут должным образом восстановлены после смерти и воссоздания процесса. ( б / 298059596 , б / 289436035 ) - Исправлена проблема при одновременном отображении нескольких диалогов в Navigation Compose, когда частично скрытые диалоги (например, не самый верхний диалог) находились в состоянии
CREATEDLifecycle, а не в состоянииSTARTED. ( аосп/2728520 , б/289257213 ) - Исправлена проблема при одновременном отображении нескольких диалогов в Navigation Compose, из-за которой закрытие самого верхнего диалога приводило к тому, что новый самый верхний диалог зависал в состоянии жизненного цикла
STARTED, а не в состоянииRESUMED. ( аосп/2629401 , б/286371387 ) - Navigation Safe Args больше не создает экземпляр своей задачи, если она фактически не выполняется. ( I0e385 , б/260322841 )
Обновление зависимостей
- Навигация Compose теперь зависит от Compose 1.5.1.
Версия 2.7.1
Версия 2.7.1
23 августа 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.1 . Версия 2.7.1 содержит эти коммиты.
Исправления ошибок
- Исправлены проблемы в навигации с помощью Compose, из-за которых при использовании
Scaffoldможно было получить ошибку при попытке доступа кLifecycle.State.DESTROYEDViewModel. ( I1dc11 , б/268422136 )
Версия 2.7.0
Версия 2.7.0
9 августа 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.0 . Версия 2.7.0 содержит эти коммиты.
Важные изменения по сравнению с версией 2.6.0
Анимации от концертмейстера
Теперь, когда AnimatedContent стабилен, мы смогли переместить код из Accompanist Navigation Animation обратно в сам Navigation Compose.
Это означает, что вся поддержка настройки пользовательских переходов, существовавшая в AnimatedNavHost , напрямую поддерживается в NavHost .
В Accompanist Navigation Animation не будет внесено никаких дополнительных изменений, и мы скоро официально объявим ее устаревшей вместе с инструкциями по переходу обратно на сам Navigation Compose, но это будет обратная версия руководства по миграции , и никаких других изменений API не потребуется, если вы уже используете последнюю альфа-версию Accompanist ( 0.31.2-alpha ). ( р/197140101 )
Исправления ошибок
- NavHost в Navigation Compose теперь правильно перехватывает системные обратные вызовы даже после того, как действие было остановлено и возобновлено. ( Icb6de , б/279118447 )
Обновления зависимостей
- Навигация теперь зависит от Compose
1.5.0с версии1.1.0.
Версия 2.7.0-rc01
26 июля 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.0-rc01 . Версия 2.7.0-rc01 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема, из-за которой лямбды
EnterTransitionиExitTransition, созданные как частьNavHost, потенциально могли оставаться в памяти даже после удаленияNavHostиз композиции. ( I893d0 )
Известные проблемы
- В Navigation 2.6.x существует проблема, заключающаяся в том, что при навигации с помощью popUpTo можно вызвать исключение
IllegalArgumentException. Вполне возможно, что этого исключения можно избежать, реструктурировав свой график, аналогично совету, предложенному здесь . ( б / 287133013 )
Версия 2.7.0-beta02
28 июня 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.0-beta02 . Версия 2.7.0-beta02 содержит эти коммиты.
Исправления ошибок
- Navigation Compose теперь имеет правильный z-порядок для пользовательских переходов, использующих навигацию с опцией
popUpTo. ( /Ib1c3a , b/285153947 ).
Версия 2.7.0-beta01
7 июня 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.0-beta01 . Версия 2.7.0-beta01 содержит эти коммиты.
Исправления ошибок
-
NavHostв Navigation Compose теперь корректно перехватывает системные обратные вызовы даже после того, какActivityбылоSTOPPEDиRESUMED. ( Icb6de , б/279118447 )
Версия 2.7.0-альфа01
24 мая 2023 г.
Выпущен androidx.navigation:navigation-*:2.7.0-alpha01 . Версия 2.7.0-alpha01 содержит эти коммиты.
Анимации от концертмейстера
Теперь, когда AnimatedContent стабилен, мы смогли переместить код из Accompanist Navigation Animation обратно в сам Navigation Compose.
Это означает, что вся поддержка настройки пользовательских переходов, существовавшая в AnimatedNavHost , напрямую поддерживается в NavHost .
В Accompanist Navigation Animation не будет внесено никаких дополнительных изменений, и мы скоро официально объявим ее устаревшей вместе с инструкциями по переходу обратно на сам Navigation Compose, но это будет обратная версия руководства по миграции , и никаких других изменений API не потребуется, если вы уже используете последнюю альфа-версию Accompanist ( 0.31.2-alpha ). ( р/197140101 )
Исправления ошибок
- Из навигации
2.6.0-rc02: исправлена проблема с навигацией во фрагментах, из-за которой навигация с помощьюpopUpToи извлечение фрагмента из заднего стека без воссоздания его представления приводила к прекращению работы системы. ( Ieb8d4 , б/281726455 )
Обновления зависимостей
- Навигация теперь зависит от Compose
1.5.0-beta01.
Версия 2.6.0
Версия 2.6.0
7 июня 2023 г.
Выпущен androidx.navigation:navigation-*:2.6.0 . Версия 2.6.0 содержит эти коммиты.
Важные изменения в навигации с версии 2.5.0.
-
argumentsNavBackStackEntryиarguments, передаваемые вOnDestinationChangedListenerтеперь являются лишь копией неизменяемых аргументов, которые были созданы при переходе к месту назначения. Это означает, что любые изменения, внесенные в эти пакеты, не будут отражены при последующих обращениях кargumentsили другим экземплярамOnDestinationChangedListener. -
NavDeepLinkтеперь поддерживает значения по умолчанию для массивов, что позволяет поддерживать повторяющиеся параметры запроса, которые будут сопоставляться с типом массива аргумента.NavTypeтакже теперь включает метод по умолчанию, который можно переопределить для объединения двух проанализированных значений. - Пользовательские подклассы
NavTypeтеперь могут переопределятьserializeAsValueдля сериализации значения в String, что позволяет полностью инкапсулировать как сериализацию, так и десериализацию (черезparseValue) в классеNavType.StringTypeтеперь переопределяет этот метод для вызоваUri.encodeдля даннойString.
Важные изменения в Navigation Compose с версии 2.5.0.
- При предварительном просмотре составного объекта с помощью
NavHostтеперь по умолчанию будет отображатьсяstartDestinationNavGraph. -
NavController.popBackStack(route),NavController.getBackStackEntry(route),NavController.clearBackStack(route)теперь поддерживают маршруты с частично или полностью заполненными аргументами. Обратите внимание, что аргументы должны точно совпадать с аргументами записи. - Попытка создать пустую
NavDeepLinkс использованием DSLnavDeepLinkKotlin теперь приведет к появлению предупреждения о том, что для глубокой ссылки необходимы uri, action и/или mimetype, чтобы быть действительными.
Важные изменения в навигации с помощью фрагментов с версии 2.5.0.
-
NavHostFragmentбольше не перехватывает саму кнопку возврата системы. Это позволяет базовомуFragmentManagerобрабатывать систему обратно. Это позволяет Fragment1.7.0-alpha01и выше обеспечивать анимацию прогнозируемого возврата в приложении на устройствах Android U. - При использовании навигации с фрагментами попытка вручную выполнить
FragmentTransaction, добавляющую фрагмент в задний стекFragmentManagerтеперь будет вызывать исключениеIllegalArgumentException. Всегда следует добавлять фрагменты через APInavigate(). - При использовании точной строки
${applicationId}в качестве заполнителя в атрибутахapp:dataиapp:dataPatternв элементе активности навигационного XML-файла заполнитель будет автоматически заполненpackageNameконтекста при инфляции. -
FragmentNavigatorтеперь использует API перехода при навигации и извлеченииNavBackStackEntries. Это означает, чтоLifecycleNavBackStackEntryтеперь будет ждать завершения специальных эффектов входного и выходного фрагмента, прежде чем перемещать свой последнийLifecycle.State. -
DialogFragmentNavigatorтеперь использует API перехода при навигации и извлеченииNavBackStackEntries. Это означает, чтоLifecycleNavBackStackEntryтеперь будет ждать, покаLifecycleDialogFragmentперейдет вDESTROYED, прежде чем перейти к самомуDESTROYED. -
NavHostFragmentтеперь позволяет вам получитьNavControllerсразу после присоединенияNavHostFragmentкFragmentManager, а не только послеonCreate(). - Поддержка навигации для модулей динамических функций теперь зависит от детальной библиотеки доставки функций Play.
- Navigation Safe Args теперь зависит от подключаемого модуля Android Gradle версии 7.3.0. Это означает, что теперь он совместим только с версиями 7.3.0+.
Важные изменения в NavigationUI с версии 2.5.0.
- При передаче идентификатора графа навигации в
AppBarConfiguration(например, черезMenu)NavigationUIтеперь рассматривает только начальный пункт назначения этого графа навигации как пункт назначения верхнего уровня, а не неправильно помечает каждый пункт назначения в графе как пункт назначения верхнего уровня. Поведение передачи идентификатора отдельного пункта назначения не изменилось. Эта же функциональность доступна для вашего собственного кода через новую функциюisTopLevelDestinationвAppBarConfiguration. - Интеграция
setupWithNavControllerвNavigationUIдля работы с верхней панелью приложения теперь будет анализировать значенияR.stringдля аргументовReferenceType, найденных в вашемandroid:labelв их значения String вместо вывода автоматически сгенерированного целого числа ресурса. -
NavigationUIтеперь предоставляет журналы, когда не удается перейти по выбранномуMenuItem.
Версия 2.6.0-rc02
24 мая 2023 г.
Выпущен androidx.navigation:navigation-*:2.6.0-rc02 . Версия 2.6.0-rc02 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема с навигацией во фрагментах, из-за которой навигация с помощью
popUpToи извлечение фрагмента из заднего стека без воссоздания его представления приводила к тому, что система обратно переставала работать. ( Ieb8d4 , б/281726455 )
Версия 2.6.0-rc01
10 мая 2023 г.
Выпущен androidx.navigation:navigation-*:2.6.0-rc01 . Версия 2.6.0-rc01 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема в навигации с фрагментами, из-за которой удаление фрагмента с помощью навигации с помощью
popUpToв обратном вызове жизненного циклаonResume()могло вызвать исключениеIllegalStateException. ( I21884 , б / 279644470 )
Версия 2.6.0-beta01
19 апреля 2023 г.
Выпущен androidx.navigation:navigation-*:2.6.0-beta01 . Версия 2.6.0-beta01 содержит эти коммиты.
Новые функции
-
NavBackStackEntryтеперь предоставляет собственную реализациюtoString. ( Ifff00b )
Исправления ошибок
- При использовании навигации с фрагментами попытка вручную выполнить
FragmentTransaction, добавляющую фрагмент в задний стекFragmentManagerтеперь будет вызывать исключениеIllegalArgumentException. Всегда следует добавлять фрагменты через APInavigate(). ( I6d38e ) - Когда есть
navigate, которая добавляет запись, иpopBackStack, который удаляет ее в одном и том же кадре, результирующая верхняя запись в заднем стеке теперь последовательно возвращается вRESUMEDLifecycle.State. ( Id8067 , б / 276495952 )
Версия 2.6.0-альфа09
5 апреля 2023 г.
Выпущен androidx.navigation:navigation-*:2.6.0-alpha09 . Версия 2.6.0-alpha09 содержит эти коммиты.
Исправления ошибок
- Исправлены проверки на недопустимый маршрут, например, если
NavDestinationсодержитNavArgumentне допускающий значения NULL, маршрут этого пункта назначения должен содержать заполнители для аргументов, названных так же, какNavArgumentне допускающий значения NULL. ( Ic62bf , б/274697949 ) - Навигация по глубоким ссылкам на основе
Action/MimeTypeтеперь будет завершаться неудачей, если в операции навигации отсутствуетNavArgument, не допускающий значения NULL, требуемыйNavDestination, которому соответствуетAction/MimeType. ( Ибфа17 , б/271777424 ) - Когда
NavControllerустанавливает граф с тем же маршрутом и пунктами назначения, что и предыдущий граф, он теперь правильно заменяет текущие узлы графа и пункты назначения обратного стека новыми экземплярами. Это устраняет сбой при использованииonLaunchSingleTopбез сохранения состояния в Navigation Compose. Это также исправляет ошибку, при которой переход к местам назначения, связанным с построением корневого графа, и неправильный обратный стек. ( I5bc58 , б/275258161 , б/275407804 )
Версия 2.6.0-альфа08
22 марта 2023 г.
Выпущен androidx.navigation:navigation-*:2.6.0-alpha08 . Версия 2.6.0-alpha08 содержит эти коммиты.
Новые функции
-
NavHostFragmentтеперь позволяет вам получитьNavControllerсразу после присоединенияNavHostFragmentкFragmentManager, а не только послеonCreate(). ( Ic6382 , б/220186282 )
Исправления ошибок
- Исправлено исключение
NullPointerExceptionпри извлечении вложенного графа, содержащего аргумент, не допускающий значения NULL. ( 6б3581 , б/249988437 ) - При возврате системы после навигации с помощью
popUpToсостояниеNavControllerпоявится в правильной записи. ( I3a8ec , б/270447657 ) -
FragmentNavigatorтеперь правильно извлекает записи, когда задний стек извлекается через систему back илиpopBackStack(), а также независимо от того, использует ли транзакция эффекты для фрагмента. ( I81bdf ) - Добавление фрагментов в
FragmentNavigatorFragmentManagerбез использования навигации больше не будет вызывать сбой. ( б17204 , б/274167493 )
Обновления зависимостей
- Навигация теперь зависит от жизненного цикла
2.6.1. ( 586fe7 ) - Навигация теперь зависит от SavedState
1.2.1. ( 078e4e ) - Навигация теперь зависит от ProfileInstaller
1.3.0. ( 512f0c )
Версия 2.6.0-альфа07
8 марта 2023 г.
Выпущен androidx.navigation:navigation-*:2.6.0-alpha07 . Версия 2.6.0-alpha07 содержит эти коммиты.
Исправления ошибок
- Варианты API
getBackStackEntry,popBackStack,clearBackStack, использующие маршруты, теперь используют шаблоны маршрутов с аргументами, допускающими значение NULL, и параметрами запроса, допускающими значение NULL ( I22294 , b/269302500 ). - Исправлена проблема, из-за которой вызов
clearBackStack()изNavControllerне очищал сохраненное состояние в диспетчере фрагментов, связанное с очищенным обратным стеком. ( Ic1cce , б/271190202 ) - Исправлена регрессия в версии 2.6.0-alpha06, из-за которой неправильный
MenuItemвBottomNavigationViewвыделялся при возврате в систему между вкладками. ( I634f6 , б/270447657 ) - Исправлена регрессия в версии 2.6.0-alpha06, из-за которой
NavBackStackEntryне переводилась в состояние RESUMED при использованииAnimation. ( Ib3589 , б/269646882 )
Версия 2.6.0-альфа06
22 февраля 2023 г.
Выпущен androidx.navigation:navigation-*:2.6.0-alpha06 . Версия 2.6.0-alpha06 содержит эти коммиты.
Новые функции
- При предварительном просмотре составного объекта с помощью
NavHostтеперь по умолчанию будет отображатьсяstartDestinationNavGraph. ( I2b89f )
Изменения API
- Все
navigateперегрузкиNavControllerтеперь помечены@MainThread, чтобы гарантировать, что они вызываются в основном потоке. ( I2c0b0 , б/263427111 )
Исправления ошибок
- Исправлен сбой при попытке навигации при использовании динамической навигации по фрагментам. ( I3ee29 , б/268360479 )
- Исправлена ошибка, из-за которой при переходе к другому фрагменту с помощью системной кнопки «Назад» нижняя панель не обновлялась до правильного выбранного элемента ( If559f , b/269044426 ).
Известные проблемы
- При использовании навигации с фрагментами жизненный цикл
NavBackStackEntryне достигаетRESUMEDпри использовании APIAnimation. ( б / 269646882 ) - При использовании навигации с фрагментами и навигации с помощью
BottomNavigationпри попытке восстановить задний стек с несколькими записямиBottomMenuItemне обновляется правильно. ( б / 270447657 ) - При использовании навигации с фрагментами после восстановления состояния
LifecycleNavBackStackEntryнеDESTROYED, когда его фрагментDESTROYED. ( б / 270610768 )
Версия 2.6.0-альфа05
8 февраля 2023 г.
Выпущен androidx.navigation:navigation-*:2.6.0-alpha05 . Версия 2.6.0-alpha05 содержит эти коммиты.
Новые функции
-
NavController.popBackStack(route),NavController.getBackStackEntry(route),NavController.clearBackStack(route)теперь поддерживают маршруты с частично или полностью заполненными аргументами. Обратите внимание, что аргументы должны точно совпадать с аргументами записи. ( Iebd28 , Ic678c , I3b37b , b/257514373 ) -
FragmentNavigatorтеперь использует API перехода при навигации и извлеченииNavBackStackEntries. Это означает, чтоLifecycleNavBackStackEntryтеперь будет ждать завершения специальных эффектов входного и выходного фрагмента, прежде чем перемещать свой последнийLifecycle.State. ( I3cb19 , б/238686802 ) -
DialogFragmentNavigatorтеперь использует API перехода при навигации и извлеченииNavBackStackEntries. Это означает, чтоLifecycleNavBackStackEntryтеперь будет ждать, покаLifecycleDialogFragmentперейдет вDESTROYED, прежде чем перейти к самомуDESTROYED. ( I53ee5 , б/261213893 )
Изменения API
-
NavigatorStateтеперь предоставляетprepareForTransition, позволяющийNavigatorперемещатьNavBackStackEntriesв промежуточныеLifecycle.States. ( I42c21 , б / 238686802 ) - Теперь вы можете получить доступ к обратному стеку, связанному с
NavGraphNavigatorилиComposeNavigatorчерез свойствоbackstack.ComposeNavigatorтакже теперь предоставляет обратный вызовonTransitionComplete(), чтобы отметитьNavBackStackEntry, выполнивший операцию навигации илиpopBackStack, как завершенную. ( I02062 , I718db , б/257519195 )
Исправления ошибок
- Состояние навигатора теперь не работает при использовании API-интерфейсов
push/popWithTransition, а запись уже обрабатывается. ( Иадбфа , б/261213893 ) - При использовании
launchSingleTopс вложеннымNavGraphвсе пункты назначения, начиная с исходного пункта назначения и заканчивая егоstartDestination, будут правильно добавлены только в верхнюю часть стека. ( Id4bea , б/253256629 ) - Навигация теперь правильно заменяет экземпляр
DialogFragmentпри переходе к тому же месту назначения с флагомlaunchSingleTop, установленным в значение true. ( I45b5a , б/149572817 ) - Навигация SafeArgs больше не вызывает ошибку компиляции при использовании аргументов длиной ровно 19 символов. ( Id60bc , b/257110095 )
Версия 2.6.0-альфа04
9 ноября 2022 г.
Выпущен androidx.navigation:navigation-*:2.6.0-alpha04 . Версия 2.6.0-alpha04 содержит эти коммиты.
Новые функции
- Пользовательские подклассы
NavTypeтеперь могут переопределятьserializeAsValueдля сериализации значения в String, что позволяет полностью инкапсулировать как сериализацию, так и десериализацию (черезparseValue) в классеNavType.StringTypeтеперь переопределяет этот метод для вызоваUri.encodeдля даннойString. ( Ie5213 , б/247637434 ) -
NavigationUIтеперь предоставляет журналы, когда не удается перейти по выбранномуMenuItem. ( I2af5a , б / 247730357 )
Исправления ошибок
- Глубокие ссылки навигации теперь анализируются лениво, а не при инициализации графа, что может повысить производительность приложения при запуске. ( Iab0ab )
- Исправлен сбой, вызванный переходом вверх после глубокой ссылки на пункт назначения с нулевыми аргументами по умолчанию. ( I51c24 , б / 243183636 )
Обновление зависимостей
- Поддержка навигации для модулей динамических функций теперь зависит от детальной библиотеки доставки функций Play. ( Ib4ddc )
- Navigation Safe Args теперь зависит от подключаемого модуля Android Gradle версии 7.3.0. Это означает, что теперь он совместим только с версиями 7.3.0+. ( I47e49 )
Версия 2.6.0-альфа03
24 октября 2022 г.
Выпущен androidx.navigation:navigation-*:2.6.0-alpha03 . Версия 2.6.0-alpha03 содержит эти коммиты.
Исправления ошибок
- Из навигации
2.5.3:NavHostбольше не будет вызывать исключениеNoSuchElementException, если для созданияCrossfadeнет доступного места назначения. Теперь он просто пропустит композицию. ( Ieb46e , б/253299416 ) - Из навигации
2.5.3: исправлена проблема, из-за которой сохраненное состояние Compose (например, использованиеrememberSaveable) не забывалось и не удалялось, когда пункт назначения извлекался из заднего стека. ( I64949 )
Обновления зависимостей
- Навигация теперь зависит от фрагмента
1.5.4. ( Icd424 )
Версия 2.6.0-альфа02
5 октября 2022 г.
Выпущен androidx.navigation:navigation-*:2.6.0-alpha02 . Версия 2.6.0-alpha02 содержит эти коммиты.
Изменения поведения
- При передаче идентификатора графа навигации в
AppBarConfiguration(например, черезMenu)NavigationUIтеперь рассматривает только начальный пункт назначения этого графа навигации как пункт назначения верхнего уровня, а не неправильно помечает каждый пункт назначения в графе как пункт назначения верхнего уровня. Поведение передачи идентификатора отдельного пункта назначения не изменилось. Эта же функциональность доступна для вашего собственного кода через новую функциюisTopLevelDestinationвAppBarConfiguration. ( Ie936e , б/238496771 )
Исправления ошибок
- Компонент
navigation:navigation-fragmentтеперь зависит от версии Fragment1.5.2. ( I00ba4 ) - Выбранный элемент меню больше не будет обновляться при переходе к месту назначения
FloatingWindow, например к диалоговому окну. ( I4cde8 , б / 240308330 )
Версия 2.6.0-альфа01
7 сентября 2022 г.
Выпущен androidx.navigation:navigation-*:2.6.0-alpha01 . Версия 2.6.0-alpha01 содержит эти коммиты.
Новые функции
- Интеграция
setupWithNavControllerвNavigationUIдля работы с верхней панелью приложения теперь будет анализировать значенияR.stringдля аргументовReferenceType, найденных в вашемandroid:label, в их значения String вместо вывода автоматически сгенерированного целого числа ресурса. ( I5f803 , б/167959935 ) -
NavDeepLinkтеперь поддерживает значения по умолчанию для массивов, что позволяет поддерживать повторяющиеся параметры запроса, которые будут сопоставляться с типом массива аргумента.NavTypeтакже теперь включает метод по умолчанию, который можно переопределить для объединения двух проанализированных значений. ( Id68c3 , б/209977108 ) - При использовании точной строки
${applicationId}в качестве заполнителя в атрибутахapp:dataиapp:dataPatternв элементе активности навигационного XML-файла заполнитель будет автоматически заполненpackageNameконтекста при инфляции. ( Яабде , б/234223561 ) - Попытка создать пустую
NavDeepLinkс использованием DSLnavDeepLinkKotlin теперь приведет к появлению предупреждения о том, что для глубокой ссылки необходимы uri, action и/или mimetype, чтобы быть действительными. ( I08d2f , б / 154038883 )
Изменения API
- Добавлена новая функция расширения
NavDestinationдля анализа динамических меток с аргументами в формеandroid:label="{arg}"в String. Поддерживает аргументыReferenceTypeпутем анализа значенийR.stringв их значения String. ( I07d89 , б/236269380 )
Изменения поведения
-
argumentsNavBackStackEntry иarguments, передаваемые вOnDestinationChangedListenerтеперь являются лишь копией неизменяемых аргументов, которые были созданы при переходе к месту назначения. Это означает, что любые изменения, внесенные в эти пакеты, не будут отражены при последующих обращениях кargumentsили другим экземплярамOnDestinationChangedListener. ( I676f5 )
Исправления ошибок
- Начиная с версии
2.5.2: Динамическая навигация теперь корректно пытается установить пункты назначения действий из других модулей перед переходом к ним. ( Ia2c16 , б/240292838 ) - Из навигации
2.5.2: Навигация теперь правильно заменяет экземпляр Fragment при переходе к тому же месту назначения и установке флагаlaunchSingleTopв значение true. ( I5a2f1 , б/237374580 ) - Из навигации
2.5.2: исправлено исключениеIllegalStateException, вызванное переходом к двойному вложенному графу, который имеет общий родительский элемент с новым пунктом назначения с всплывающим началом. ( I9f7cb , б/243778589 )
Версия 2.5
Версия 2.5.3
24 октября 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.3 . Версия 2.5.3 содержит эти коммиты.
Исправления ошибок
-
NavHostбольше не будет вызывать исключениеNoSuchElementException, если для созданияCrossfadeнет доступного места назначения. Теперь он просто пропустит композицию. ( Ieb46e , б/253299416 ) - Исправлена проблема, из-за которой сохраненное состояние Compose (например, использование
rememberSaveable) не забывалось и не удалялось, когда пункт назначения извлекался из заднего стека. ( I64949 )
Версия 2.5.2
7 сентября 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.2 . Версия 2.5.2 содержит эти коммиты.
Исправления ошибок
- Динамическая навигация теперь корректно пытается установить пункты назначения действий из других модулей перед переходом к ним. ( Ia2c16 , б/240292838 )
- Навигация теперь будет правильно заменять экземпляр Fragment при переходе к тому же месту назначения и установке флага
launchSingleTopв значение true. ( I5a2f1 , б/237374580 ) - Исправлено исключение
IllegalStateException, вызванное переходом к двойному вложенному графу, который имеет общий родительский элемент с новым пунктом назначения с всплывающим началом. ( I9f7cb , б/243778589 )
Обновление зависимостей
- Навигация
2.5.2теперь зависит от фрагмента1.5.2. ( аосп/2178734 )
Версия 2.5.1
27 июля 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.1 . Версия 2.5.1 содержит эти коммиты.
Исправления ошибок
-
Navigation Safe Argsбольше не будут вызывать предупреждения об устаревании в созданных классах при использовании пользовательских типов аргументов, сохраненных вBundle. ( Id86ed , б/237725966 )
Обновления зависимостей
- Библиотека навигации теперь зависит от жизненного цикла
2.5.1. ( Ib4451 ) - Библиотека навигации теперь зависит от действия
1.5.1. ( I3efe8 ) - Библиотека навигации теперь зависит от фрагмента
1.5.1. ( I56177 )
Версия 2.5.0
29 июня 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.0 . Версия 2.5.0 содержит эти коммиты.
Важные изменения с версии 2.4.0
- Интеграция CreationExtras —
Navigationтеперь имеет возможность предоставлятьViewModelProvider.Factoryбез сохранения состояния черезCreationExtrasжизненного цикла2.5.0.
Навигация SafeArgs
-
Navigation Safe Argsобновила зависимостьAndroid Gradle Plugin, чтобы использовать7.0.4, убрав совместимость с версиями AGP до7.0. - Добавлена поддержка атрибута пространства имен build.gradle, который будет использоваться вместо applicationId.
Другие изменения
-
visibleEntriesбольше не является экспериментальным и предоставляет функцию для получения всех записей, пункт назначения которых в данный момент виден в соответствии сNavController.
Версия 2.5.0-rc02
15 июня 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.0-rc02 . Версия 2.5.0-rc02 содержит эти коммиты.
Исправления ошибок
- Исправлен сбой, вызванный быстрым переключением между нижними пунктами назначения при использовании Navigation Compose
NavHost. ( I3979a , б / 234054916 ) -
Navigation SafeArgsбольше не приводит к сбою при использованииapplicationIdSuffixи пространства имен без присутствияapplicationIdили когдаapplicationIdи пространство имен различаются. ( I754b1 , б/233119646 ) -
NavArgumentтеперь имеет специальную функциюtoString()для отображения внутренних значений аргумента. ( I900a8 )
Версия 2.5.0-rc01
11 мая 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.0-rc01 . Версия 2.5.0-rc01 содержит эти коммиты.
Новые функции
- Добавлено новое правило проверки, предостерегающее от размещения элементов
<deeplink>внутри элементов<activity>в файлеnavigation.xml. ( Ic15a5 , b/178403185 ).
Исправления ошибок
- Составные области в
NavHostиDialogHostтеперь располагаются в ожидаемом порядке, т. е. внутренние составные объекты располагаются перед внешними составными объектами. ( I157e6 ) - Навигация SafeArgs теперь использует
PathSensitivity.RELATIVEвArgumentsGenerationTask, чтобы обеспечить возможность перемещения кэша. Это означает, что запись кэша теперь можно повторно использовать из сборки CI в локальную сборку. ( I5f67c , б / 173420454 ) - Правило проверки
UnrememberedGetBackStackEntryDetectorбыло обновлено, чтобы гарантировать, что вызовremember, окружающий вызовgetBackStackEntry(), также передает объектNavBackStackEntryв качестве ключа. ( Ib7081 , b/227382831 )
Версия 2.5.0-бета01
20 апреля 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.0-beta01 . Версия 2.5.0-beta01 содержит эти коммиты.
Исправления ошибок
-
DialogNavigatorтеперь используетpopWithTransitionпри выполнении вызоваdismiss(). Это устраняет состояние гонки при использованииViewModelв пункте назначенияdialog, которое могло вызвать исключениеIllegalStateExceptionпри закрытии диалога либо путем возврата системы, либо нажатием за пределами диалогового окна для выхода. ( Id7376 , б/226552301 )
Обновления зависимостей
- Навигация теперь зависит от жизненного цикла
2.5.0-beta01, исправляя исключениеIllegalStateExceptionпри вложении одногоNavHostв другойNavHostна неосновной нижней вкладке навигации при использовании нескольких обратных стеков.
Версия 2.5.0-альфа04
6 апреля 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.0-alpha04 . Версия 2.5.0-alpha04 содержит эти коммиты.
Изменения API
-
visibleEntriesбольше не является экспериментальным. ( I4829f , б / 225394514 )
Исправления ошибок
- NavHost теперь зависит от
visibleEntriesизNavController, чтобы определить, какие записи создавать. Это означает, что при использовании вложенного NavHost внутреннийNavHostтеперь должен правильно анимироваться. ( I4ba2b , б/225394514 ) -
visibleEntriesStateFlowпредоставляемыйNavController, теперь основан на максимальном состоянии жизненного цикла записи, а не на текущем состоянии жизненного цикла. Это означает, что даже если жизненный цикл хостаnavControllerопустится ниже STARTED, список видимых целых останется прежним. ( I9e2a8 , б/225394514 ) -
SavedStateViewFactoryтеперь поддерживает использованиеCreationExtras, даже если он был инициализирован с помощьюSavedStateRegistryOwner. Если указаны дополнительные параметры, инициализированные аргументы игнорируются. ( I6c43b , б/224844583 ) -
NavDeepLinkтеперь может анализировать Uris с помощью одного параметра запроса без значения. ( I0efe8 , б/148905489 ) - Пустая строка теперь считается допустимым аргументом в глубоких ссылках. ( I70a0d , б/217399862 )
-
Navigation Safe Argsбольше не будут аварийно завершать работу при использовании пространств имен и отсутствииAndroidManifest.xml. ( I17ccf , б/227229815 )
Версия 2.5.0-альфа03
23 февраля 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.0-alpha03 . Версия 2.5.0-alpha03 содержит эти коммиты.
Изменения API
- Теперь вы можете передать
CreationExtrasby navGraphViewModels, чтобы создатьViewModel. ( I29217 , б / 217618359 )
Исправления ошибок
-
NavDeepLinksтеперь правильно поддерживает закодированные символы новой строки, встроенные в URI маршрутов/глубинных ссылок. ( I513d1 , б/217815060 ) -
CreationExtrasтеперь будет работать правильно при использовании сNavBackStackEntriesдля создания ViewModels. ( I69161 , б / 217617710 ) - Navigation Safe Args теперь поддерживает использование пространства имен, определенного в
build.gradle, вместо пакета в AndroidManifest. ( I659ef , б / 217414933 )
Версия 2.5.0-альфа02
9 февраля 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.0-alpha02 . Версия 2.5.0-alpha02 содержит эти коммиты.
Исправления ошибок
- Из навигации
2.4.1:NavHostFragmentтеперь правильно устанавливаетOnBackPressedDispatcherпри использовании привязки представления с вложенными графиками. ( Ifbb51 , б/214577959 ) - Из навигации
2.4.1: при глубокой связи через несколько вложенныхNavGraphзадний стек теперь правильно включает промежуточные начальные пункты назначения. ( I504c0 , б/214383060 )
Версия 2.5.0-альфа01
26 января 2022 г.
Выпущен androidx.navigation:navigation-*:2.5.0-alpha01 . Версия 2.5.0-alpha01 содержит эти коммиты.
Новые функции
-
NavBackStackEntryтеперь интегрируется с ViewModel CreationExtras, представленным как часть жизненного цикла2.5.0-alpha01. ( Ib9fe2 , б/207012490 )
Исправления ошибок
- Исправлена проблема, из-за которой доступ к
ViewModel, созданному с помощьюby navGraphViewModels()изonCreate()фрагмента, завершался с ошибкой сIllegalStateException. ( I8a14d ) -
NavDeepLinkбольше не будет без необходимости декодировать аргументы дважды, а это означает, что правильные аргументы теперь передаются в конечный пункт назначения. ( I31b0a , б/210711399 )
Безопасные аргументы
- Safe Args теперь зависит от плагина Android Gradle версии 7.0.4. Это означает, что Navigation Safe Args больше не будет совместим с версиями Android Studio до 7.0, но теперь совместим с подключаемым модулем Android Gradle 7.1.0 и выше. ( I41c88 , б / 213086135 , б / 207670704 )
Версия 2.4.2
Версия 2.4.2
6 апреля 2022 г.
Выпущен androidx.navigation:navigation-*:2.4.2 . Версия 2.4.2 содержит эти коммиты.
Исправления ошибок
- Перенесено из навигации
2.5.0-alpha03:NavDeepLinksтеперь правильно поддерживает закодированные символы новой строки, встроенные в URI маршрутов/глубинных ссылок. ( I513d1 , б/217815060 ) - Перенесено из Navigation
2.5.0-alpha03: Navigation SafeArgs теперь поддерживает использование пространства имен, определенного вbuild.gradle, вместо пакета в AndroidManifest. ( I659ef , б / 217414933 ) - Перенесено из навигации
2.5.0-alpha04:Navigation Safe Argsбольше не будут аварийно завершать работу при использовании пространств имен и отсутствииAndroidManifest.xml. ( I17ccf , б/227229815 ) - Backported from Navigation
2.5.0-alpha04: Empty string are now considered as valid arguments in deep links. ( I70a0d , b/217399862 )
Версия 2.4.1
Версия 2.4.1
9 февраля 2022 г.
androidx.navigation:navigation-*:2.4.1 is released. Версия 2.4.1 содержит эти коммиты.
Исправления ошибок
- The
NavHostFragmentwill now properly set theOnBackPressedDispatcherwhen using viewbinding with nested graphs. ( Ifbb51 , b/214577959 ) - When deep linking through multiple nested
NavGraphs the back stack will now properly include intermediate start destinations. ( I504c0 , b/214383060 ) - Backported from Navigation
2.5.0-alpha01: Fixed an issue where accessing a ViewModel created viaby navGraphViewModels()from a Fragment'sonCreate()would fail with anIllegalStateException. ( I8a14d ) - Backported from Navigation
2.5.0-alpha01:NavDeepLinks no longer unnecessarily decode args twice, meaning that the properly decoded args are now passed to your final destination. ( I31b0a , b/210711399 ) - Backported from Navigation
2.5.0-alpha01: Safe Args now depends on Android Gradle Plugin version 7.0.4. This means that Navigation Safe Args will no longer be compatible with Android Studio versions prior to 7.0, but is now compatible with Android Gradle Plugin 7.1.0 and higher. ( I41c88 , b/213086135 , b/207670704 )
Версия 2.4.0
Версия 2.4.0
26 января 2022 г.
androidx.navigation:navigation-*:2.4.0 is released. Версия 2.4.0 содержит эти коммиты.
Важные изменения с версии 2.3.0
- All Navigation artifacts have been rewritten in Kotlin. This has improved the nullability of classes using generics (such as
NavTypesubclasses). All Kotlin extension functions that used to be part of the-ktxartifacts have been moved to their respective main artifacts. The-ktxartifacts will continue to be published, but are completely empty. - The
navigation-fragmentartifact now contains a prebuilt implementation of a two pane layout via the newAbstractListDetailFragment. This fragment uses aSlidingPaneLayoutto manage a list pane (which your subclass provides) and a detail pane, which uses aNavHostFragmentas its implementation, as seen in our example implementation . - The
currentBackStackEntryAsFlow()method onNavControllerprovides aFlowthat emits whenever the currentNavBackStackEntrychanges. This flow can be used as an alternative to manually managing anOnDestinationChangedListener. - NavController now offers the ability to retrieve a list of all visible
NavBackStackEntryinstances as aStateFlowvia the experimentalvisibleEntriesproperty. - It is now possible to extend the
NavTypeclass to create custom NavTypes. Custom types are supported only when building your navigation graph programmatically, such as via the Navigation Graph Kotlin DSL . Navigation now provides
findStartDestination()andgetHierarchy()APIs that can be used to help implement custom NavigationUI.findStartDestination()is an extension function onNavGraphthat will locate the actual start destination that will be displayed when you navigate to the graph, even if thestartDestinationis itself a nestedNavGraph.getHierarchy()is a function onNavDestinationthat can be used to verify if a given destination is within the hierarchy of another.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }NavigationUImethods that took aBottomNavigationViewhave been updated to instead take its superclass introduced in Material1.4.0,NavigationBarView. This allows these methods to be used with theNavigationRailView.When inflating an
<action>element via XML, animation attributes can use attributes pulled from your theme using theapp:enterAnim="?attr/transitionEnter"syntax.Safe Args now generates a
fromSavedStateHandle()method for eachNavArgsclass. ( #122 , b/136967621 )class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Navigation Routes and the Kotlin DSL
Previous versions of Navigation relied on each destination having a constant integer ID that would uniquely identify it from its sibling destinations and allow you to navigate() to that destination either directly or via an action. While this continues to be valid and useful, particularly in cases where you are defining your navigation graph in XML and can use auto-generated R.id constants or Safe Args (which uses those constants to generate code at build time), this system of unique integers did not capture the semantic meaning and expressiveness needed to support fully dynamic graphs built programmatically at runtime via the Navigation Kotlin DSL .
This release introduces a new option for uniquely identifying a destination in a navigation graph by its route . A route is a String that defines the unique path to a destination. All Kotlin DSL methods that took a destination ID are now deprecated and replaced with an equivalent API that takes a route.
Each route should be treated as the 'path' part of a Uri that defines that destination, eg, home , profile/{userId} , profile/{userId}/friends , etc. When the identity of a destination is associated with a specific piece of content, those dynamic arguments should be part of the route, following the same rules as implicit deep links .
All NavController APIs that used to only take an ID now have an overload that takes a route String . This includes navigate() , popBackStack() , popUpTo() , and getBackStackEntry() .
This has had some API implications:
- The
popUpToKotlin property on the Kotlin DSL has been deprecated in favor ofpopUpToId. - The
getStartDestination()API has been deprecated in favor ofgetStartDestinationId().
Unlike when navigating by ID, navigating by route follows the same rules as implicit deep links in that you can directly navigate to any destination in any nested graph, ensuring that these routes are usable in multi-module projects without explicitly adding an externally visible deep link to each destination.
Navigation Compose
The navigation-compose artifact provides integration between the Navigation Component and Jetpack Compose . It uses @Composable functions as the destinations in your application.
This release provides:
- A
NavHostcomposable that allows you to construct your navigation graph via a Kotlin DSL, usingcomposableanddialogdestinations, plus support for optional Navigators such as those from Accompanist Navigation Material . - Mandatory support for crossfading between destinations. Accompanist Navigation Animation can be used to control the enter and exit transitions using experimental Compose APIs.
- Scoping of a
Lifecycleto each composable destination. Each destination only reaches theRESUMEDstate when any entering transitions finish and immediately drops toSTARTEDwhen any exiting transitions start, thus allowing you to avoid allIllegalStateExceptionand multi-touch issues by only triggering anavigatecall when theLifecycleisRESUMED. - Scoping of
ViewModel(via theviewModel()API of Lifecycle ViewModel Compose2.4.0orhiltViewModel()of Hilt Navigation Compose1.0.0at the destination level, providing a scope that survives configuration changes and being on the back stack (when your Composable content is otherwise disposed) and a signal in the ViewModel'sonCleared()that indicates the permanent disposal and cleaning up of state associated with thatNavBackStackEntry. - Scoping of
rememberSaveablestate at a destination level, ensuring that all composable state is saved and restored automatically when you return to a destination. - Full support for saving and restoring the state of the
NavControllerand its destination's state after process death and recreation. - Automatic integration with the system back button.
Support for passing arguments, attaching deep links to destinations, and returning a result to previous destinations.
Compose specific helpers in
rememberNavController()andcurrentBackStackEntryAsState()to allow hoisting state and connecting theNavControllerto composables outside of theNavHost(such as a bottom navigation bar).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
See the Compose Navigation guide for more information.
Несколько задних стеков
The NavController is responsible for managing the back stack of destinations, adding destinations to the back stack when you navigate() to them and removing them when you call popBackStack() or trigger the system back button. The existing NavOptions class and the integration into <action> elements in the navigation graph XML has been expanded to support saving and restoring the back stack.
As part of this change, the NavigationUI methods of onNavDestinationSelected() , BottomNavigationView.setupWithNavController() and NavigationView.setupWithNavController() now automatically save and restore the state of popped destinations, enabling support for multiple back stacks without any code changes. When using Navigation with Fragments, this is the recommended way to integrate with multiple back stacks.
The underlying APIs for saving and restoring the state are exposed via a number of surfaces:
In Navigation XML, the
<action>element can now use the boolean attributes ofapp:popUpToSaveStateandapp:restoreStateto save the state of any destinations popped viaapp:popUpToand restore the state associated with the destination passed as theapp:destination:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />In the
navOptionsKotlin DSL , you can add therestoreStateboolean property and thesaveStateboolean property on thepopUpTobuilder :// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }In manually building a
NavOptionsobject via theNavOptions.Builder, you can use thesetRestoreState()and new overload tosetPopUpTo()that takes an additionalsaveStateparameter.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);Programmatic calls to
popBackStack()can now include an additionalsaveStateparameter.You can use the
clearBackStack()method to clear any state that was saved withpopBackStack()orpopUpToSaveState.
In all cases, the NavController will save and restore the state of each NavBackStackEntry , including any navigation destination scoped ViewModel instances. The Navigator APIs have been updated to enable each Navigator to support saving and restoring their own state.
Изменения поведения
-
NavDeepLinkBuildernow addsPendingIntent.FLAG_IMMUTABLEto thePendingIntentreturned bycreatePendingIntent(), ensuring that this API works as expected when targeting Android 12. - Navigation now depends on Lifecycle
2.3.1and now markssetGraph(),popBackStack(),navigateUp(), andnavigate(), the methods that update theNavBackStackEntryLifecycle, as@MainThread, aligning Navigation with the main thread enforcement introduced in Lifecycle2.3.0. - Deep links now verify that all required arguments (those without default values) are present in the
Uri. -
NavDeepLinkparsed arguments now consider pound signs in the same way as question marks as a separator between path segments, preventing an argument from spanning across the pound sign. - When generating actions, Kotlin code generated from Safe Args now puts arguments without default values before those with default values as parameters.
- When generating arguments, Safe Args now puts parameters without default values before those with default values.
- Safe-Args now depends on Android Gradle Plugin 4.2.0. This means you should no longer get the using
applicationIdTextResourcewarning.
Известные проблемы
- Fixed in Navigation
2.5.0-alpha01: accessing aViewModelcreated viaby navGraphViewModels()from a Fragment'sonCreate()will fail with anIllegalStateException. ( b/213504272 ) - Fixed in Navigation
2.5.0-alpha01: Safe Args 2.4.0 is incompatible with Android Gradle Plugin 7.1.0 and higher. ( b/213086135 ) - Deep linking with multiple nested nav graphs doesn't correctly create the full backstack. ( b/214383060 )
Версия 2.4.0-rc01
15 декабря 2021 г.
androidx.navigation:navigation-*:2.4.0-rc01 is released. Version 2.4.0-rc01 contains these commits.
Изменения поведения
-
NavDeepLinkparsed arguments now consider pound signs in the same way as question marks as a separator between arguments. ( I21309 , b/180042703 )
Исправления ошибок
- Deeplinks will no longer ignore arguments with values that are the same as the name of the placeholder. ( If8017 , b/207389470 )
-
NavControllerwill no longer crash when popping a nested destination using transitions after theNavControllerhas been restored. ( I0f7c9 , b/205021623 ) - The error message when using an invalid
startDestinationwill now default to the start destination's route if one is available. ( I86b9d , b/208041894 )
Navigation Compose Bug Fixes
- Fixed potential crash caused by fast switching between the start destination and another destination using bottom nav menu items. ( Ic8976 , b/208887901 )
- Dialog destination are now properly restored on top of the screen after config changes or process death. ( I4c0dc , b/207386169 )
- Fixed an issue where attempting to retrieve a
ViewModelfrom a dialog'sNavBackStackEntrywould fail when the dialog was dismissed. ( I6b96d , b/206465487 ) - Fixed an issue when using
activitydestinations with Navigation Compose'sNavHostthat would result in infinite recompositions. ( I8f64c ) - Fixed a leak in Navigation Compose where it was holding on to a reference of the old activity after a config change or process death. ( I4efcb , b/204905432 )
Safe Args Bug Fixes
-
SafeArgsno longer crashes when attempting to restore custom parcelable arrays after process death. ( I618e8 , b/207315994 ) - Fixed a bug in safe args that would not allow boolean arrays to have a
nullvalue. ( I8c396 , b/174787525 )
Version 2.4.0-beta02
3 ноября 2021 г.
androidx.navigation:navigation-*:2.4.0-beta02 is released. Version 2.4.0-beta02 contains these commits.
Изменения API
- The handling of both explicit and implicit deep links now automatically adds the
saveStateflag when navigating to another graph, ensuring that code such asNavigationUI.setupWithNavControllerand code using multiple back stacks works as expected. ( Ic8807 )
Изменения поведения
- Deep link patterns are now compiled lazily in NavDeepLink instead of during inflation. This should improve the inflation time of navigation graphs that include deep links. ( b8d257 , b/184149935 )
Исправления ошибок
- Fixed an issue where NavBackStackEntries were being pushed down to
Lifecycle.State.CREATEDafter moving toLifecycle.State.STARTEDwhen theNavHostis added directly to the activity'ssetContent(). ( Ia5ac1 , b/203536683 ) - Fixed a race condition where popping a
DialogFragmentdestination off of the back stack before the dialog was actually shown would not actually dismiss the dialog, resulting in a crash when the errant dialog was manually dismissed by the user. ( I687e5 ) - Fixed an issue where the
onNavDestinationSelectedAPI onNavigationUIwould returntrueeven if you didn't actuallynavigate()to that navigation graph. It now uses the same logic used internally bysetupWithNavControllerto only select theMenuItemassociated with the current destination using thehierarchyof the destination. ( I2b053 )
Версия 2.4.0-beta01
27 октября 2021 г.
androidx.navigation:navigation-*:2.4.0-beta01 is released. Version 2.4.0-beta01 contains these commits.
Новые функции
- You can now use
by navGraphViewModelwith a route as an alternative to using an ID so as to better support using the Navigation Kotlin DSL with Fragments. ( I901e3 , b/201446416 )
Изменения API
- The
visibleEntriesAPI is now experimental. ( I93f6f )
Исправления ошибок
- ViewModels will no longer be destroyed when transitions are interrupted by navigating back and forth between the same screens ( Id52d8 , b/200817333 )
- Nullable
NavDeepLinkarguments no longer require a default value when adding deep links toNavDestinations. ( I5aad4 , b/201320030 ) - NavBackStackEntries now with different Lifecycles are not longer considered equal. This means NavHost will properly recompose all destinations when doing navigation with singleTop and when reselecting bottom menu items. ( I1b351 , b/196997433 )
- Fixed an issue with
AbstractListDetailFragmentthat caused thelayout_widthandlayout_weightattributes on the list pane returned byonCreateListPaneView()to be incorrectly handled or ignored. ( f5fbf3 ) - The visual state of dialog destinations now correctly stays in sync with the
DialogFragmentNavigator's state. This means that manually calling the asynchronousdismiss()API forDialogFragmentnow properly clears all dialog destinations above the now dismissed dialog. This does not affect cases where you usepopUpToorpopBackStack()to dismiss your dialog. ( I77ba2 ) -
AbstractAppBarOnDestinationChangedListenernow has clearer error messaging foronDestinationChanged(). ( Ie742d )
Версия 2.4.0-альфа10
29 сентября 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha10 is released. Version 2.4.0-alpha10 contains these commits.
Новые функции
- NavController now offers the ability to retrieve a list of all visible
NavBackStackEntryinstances via thevisibleEntriesStateFlow ( Ia964e ) -
rememberNavController()now takes a optional set ofNavigatorinstances that will be added to the returnedNavControllerto better support optional Navigators such as those from Accompanist Navigation Material . ( I4619e )
Исправления ошибок
- Dynamic Navigation will no longer crash when the Activity is recreated. ( Ifa6a3 , b/197942869 )
- Fixed an issue with the system back button that occurs only after popping back to a composable destination that contains a
NavHost. ( 3ed148 , b/195668143 ) - SafeArgs now generates the arguments for
fromBundle()andfromSavedStateHandle()in the proper parameter order. ( I824a8 , b/200059831 )
Версия 2.4.0-альфа09
15 сентября 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha09 is released. Version 2.4.0-alpha09 contains these commits.
Новые функции
- You can now use the
clearBackStack()method to clear any state that was saved withpopBackStack()orpopUpToSaveState. ( I80a0f ) - You can now pass in a list of arguments and/or deep links to your nested navigation graph's builder and they will automatically be added to the resulting graph. ( I8a470 , b/182545357 )
Изменения API
- The
navArgumentKotlin DSL function is now part ofnavigation-commoninstead ofnavigation-compose. This will require updating imports to continue to use this function. ( I1d095 )
Изменения поведения
- When generating arguments, Safe Args now puts parameters without default values before those with default values. ( I89709 , b/198493585 )
Исправления ошибок
- When using Navigation Compose, NavGraphs will only be
DESTROYEDonce all their children areDESTROYED. ( I86552 , b/198741720 ) - Nullable
NavDeepLinkarguments no longer require a default value. ( Ia14ef , b/198689811 ) - Calling
setGraph()with a new graph will now also clear any saved back stacks in addition to its previous behavior of popping the back stack. ( I97f96 ) - Fixed an issue where
OnDestinationChangedListenerinstances and thecurrentBackStackEntryFlowwere not notified when usinglaunchSingleTop. ( Iaaebc )
Обновления зависимостей
- Navigation Compose now depends on Activity Compose 1.3.1 . ( I05829 )
- Navigation Compose now depends on Lifecycle ViewModel Compose
2.4.0-beta01. ( Ib86a3 )
Версия 2.4.0-альфа08
1 сентября 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha08 is released. Version 2.4.0-alpha08 contains these commits.
Новые функции
- It is now possible to extend the
NavTypeclass to create custom NavTypes. Custom types are supported only when building your navigation graph programmatically, such as via the Navigation Graph Kotlin DSL . ( I78440 , b/196871885 )
Изменения поведения
- When generating actions, Kotlin code generated from Safe Args now puts arguments without default values before those with default values as parameters. ( Idb697 , b/188855904 )
- Deep links now verify that all required arguments (those without default values) are present in the
Uri. ( #204 , b/185527157 )
Исправления ошибок
- Using
getBackStackEntryandpreviousBackStackEntryinside composable(), in conjunction withremember(), will no longer cause an exception for no destination being on the back stack. ( I75138 , b/194313238 ) - Navigation Compose now properly recomposes when changing back stack arguments and using
launchSingleTop=true. ( Iebd69 , b/186392337 ) - There will no longer be an
ArrayIndexOutOfBoundsExceptionwhen callingsetGraphwith a graph with 13 or 29 destinations. ( I1a9f1 , b/195171984 ) - The SafeArgs java generator should no longer cause lint warnings when generating Args classes. ( I1a666 , b/185843837 )
Внешний вклад
- Thanks ospixd for ensuring that deep links verify that all required arguments (those without default values) are present in the
Uri. ( #204 , b/185527157 )
Version 2.4.0-alpha07
18 августа 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha07 is released. Version 2.4.0-alpha07 contains these commits.
Исправления ошибок
- Navigation Compose now properly saves state after configuration changes and when changing graphs while using the multiple back stack feature. ( If5a3d , b/195141957 )
- Re-selecting the same tab when using navigation compose with multiple back stacks will no longer result in a blank screen. ( I860dc , b/194925622 )
-
NavHostnow observes for changes in theLifecycle.StateofNavBackStackEntrys which means using aNavHostin a fragment now will properly be recomposed as the lifecycle changes instead of resulting in a blank screen. ( I4eb85 , b/195864489 ) - Fixed an issue where dismissing a
DialogFragmentwould not correctly update theNavControllerstate after recreating your activity (ie, after a configuration change). ( Icd72b ) - Fixed an issue where popping a dialog destination would not update the NavController's system back button handling, potentially causing the NavController to intercept the back button even though it does not have any back stack to pop. ( If3b34 )
- Safe-args now automatically generates a
toSavedStateHandlemethod for arguments which can be used to test yourViewModelcode. ( If1e2d , b/193353880 )
Версия 2.4.0-альфа06
4 августа 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha06 is released. Version 2.4.0-alpha06 contains these commits.
Изменения API
- The
requireSlidingPaneLayout()andrequireDetailPaneNavHostFragment()methods onAbstractListDetailFragmenthave been renamed togetSlidingPaneLayout()andgetDetailPaneNavHostFragment(), respectively. ( I34a08 )
Изменения поведения
- When navigating with animations (like
Crossfade), the new destination'sLifecyclewill now only reach theRESUMEDwhen the animation completes. ( If0543 , b/172112072 , b/194301889 ) - Navigation Compose's
NavHostnow sets the graph as part of the first composition. ( Ieb7be )
Исправления ошибок
- Popping the last destination of a navigation graph no longer throws a
ClassCastException. ( If0543 , b/172112072 , b/194301889 ) - Fixed a
NullPointerExceptionthat would occur when adding a deep link without aUriand navigating via a route or deep link. ( 938a0c , b/193805425 ) - Fixed an issue in Navigation Compose where a deep linked
NavBackStackEntrywould not reach theRESUMEDstate. ( I192c5 ) - Fixed an issue where popping a dialog destination would not update the NavController's system back button handling, potentially causing the NavController to intercept the back button even though it does not have any back stack to pop. ( aosp/1782668 )
Version 2.4.0-alpha05
21 июля 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha05 is released. Version 2.4.0-alpha05 contains these commits.
Изменения поведения
- Navigation Compose's
NavHostnow always uses Crossfades when navigating through destinations. ( I07049 , b/172112072 ) - You can now make changes to the graph of a NavHost. Graphs with the same startDestination and destinations in the graph will be considered equal and will not clear the
NavControllerback stack. ( I0b8db , b/175392262 )
Исправления ошибок
- Fixed a
NoSuchElementExceptionwhen callingpopBackStack()from within aLifecycleObserverattached to aNavBackStackEntrycaused by reentrant updates to the NavController's state. ( I64621 ) -
AbstractListDetailFragmentnow allowsSlidingPaneLayoutto be completely stripped from your APK whenAbstractListDetailFragmentis not used. ( I611ad ) -
NavGraphandNavDestinationnow override the equals method so two objects with the same values will be considered equal. ( I166eb , b/175392262 )
Версия 2.4.0-альфа04
1 июля 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha04 is released. Version 2.4.0-alpha04 contains these commits.
Новые функции
- The
navigation-fragmentartifact now contains a prebuilt implementation of a two pane layout via the newAbstractListDetailFragment. This fragment uses aSlidingPaneLayoutto manage a list pane (which your subclass provides) and a detail pane, which uses aNavHostFragmentas its implementation, as seen in our example implementation . ( Iac4be , b/191276636 ) - The
NavHostof thenavigation-composeartifact now supportsdialogdestinations in addition tocomposabledestinations. These dialog destinations will each be shown within a ComposableDialog, floating above the currentcomposabledestination. ( I011d0 )
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Изменения API
- The
addfunction inNavigatorStatehas been renamed topush. All current calls toadd()will need to be changed to push(). ( Ie89fc , b/172112072 ) - Custom
Navigatorinstances can now use thepushWithTransactionandpopWithTransitionAPIs onNavigatorStateto push or pop a destination asynchronously. Note that this APIs are not yet used by any of the included navigators. ( Ic4d7c , b/172112072 )
Изменения поведения
-
NavDeepLinkBuildernow addsPendingIntent.FLAG_IMMUTABLEto thePendingIntentreturned bycreatePendingIntent(), ensuring that this API works as expected when targeting Android 12. ( If8c52 )
Исправления ошибок
- Fixed an issue with
<include-dynamic>where arguments passed to the graph would not be correctly passed to the dynamically included graph. ( I3e115 ) - Fixed a
NullPointerExceptionwhen navigating to a destination using astring[]argument with a default value of@null. ( I1fbe8 ) - Add ProGuard rules for
@Navigator.Name, fixing issues when using R8 3.1 full mode. ( I2add9 , b/191654433 ) - SafeArgs will no longer fail when building your app with
Kotlinversions before1.5.0. ( Icd1ff , b/190739257 )
Версия 2.4.0-альфа03
16 июня 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha03 is released. Версия 2.4.0-alpha03 содержит эти коммиты.
Исправления ошибок
- Fixed an issue where two
navigate()calls were needed to navigate to an included dynamic graph. ( I7785c , b/188859835 ) - Fixed a regression introduced in Navigation
2.4.0-alpha01wheresetupActionBarWithNavController()would not properly remove the Up icon when you are on a top level destination. ( I5d443 , b/189868637 ) - Fixed an
IllegalStateExceptionwhen callingpopBackStack()after previously popping the root graph of the NavController. ( I2a330 , b/190265699 ) - ProGuard rules for
by navArgs()now properly apply when usingnavigation-commonor any artifacts that depend on it. ( I68800 , b/190082521 ) - An
OnDestinationChangedListenerthat callsnavigate()the first time it receives a callback now properly get a second callback with the destination it navigated to. ( Ie5f9e , b/190228815 ) - Safe Args no longer crashes when using it with dynamic feature modules and AGP 7.0+. ( I69518 , b/189966576 )
Известная проблема
- Safe Args will fail with an
Unable to find method ''java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)''error when using Gradle6.7.0due to a dependency on an older version of Kotlin. This can be worked around by updating to use Gradle 7.0. ( b/190739257 )
Version 2.4.0-alpha02
2 июня 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha02 is released. Версия 2.4.0-alpha02 содержит эти коммиты.
Новые функции
- Routes are now supported for Activity, Fragment and Dialog destinations, as well as throughout the DynamicNavigation Kotlin DSL. ( Ib5544 , Ia617b , I22f96 , b/188914648 , b/188901565 )
-
NavigationUIhas temporarily added experimental APIs to allow opting out of saving your state. While always saving the state is the correct behavior, there are still uses of deprecated libraries (ie retained fragments), that cannot be supported when saving the state so this gives an opportunity for apps to slowly convert away from any unsupported APIs. ( Idf93c ) Navigation now provides
findDestination()andgetHierarchy()APIs that can be used to help implement custom NavigationUI.findDestination()is an extension function onNavGraphthat will locate a destination within the graph.getHierarchy()is a function onNavDestinationthat can be used to verify if a given destination is within the hierarchy of another.( I2932f , b/188183365 )val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }NavigationUI methods that took a
BottomNavigationViewhave been updated to instead take its superclass introduced in Material1.4.0,NavigationBarView. This allows these methods to be used with theNavigationRailView. ( Ib0b36 , b/182938895 )When inflating an
<action>element via XML, animation attributes can use attributes pulled from your theme using theapp:enterAnim="?attr/transitionEnter"syntax. ( I07bc1 , b/178291654 )
Изменения API
- Kotlin DSL builders that use an ID have been deprecated and should be replaced with builders that use routes ( I85b42 , b/188816479 ) ( I9f58f , b/188816479 )
Исправления ошибок
-
DialogFragmentNavigatornow uses theNavigatorState.pop()API to inform theNavControllerwhen a dialog is dismissed by hitting the system back button or clicking outside of it, ensuring that theNavControllerstate is always in sync with the Navigator's state. ( I2ead9 ) Navigation no longer gives a
ConcurrentModificationExceptionwhen using manipulating the list ofOnDestinationChangedListenersfrom with anonDestinationChangedcallback. ( Ib1707 , b/188860458 )Safe Args no longer crashes when attempting to generate direction properties in Kotlin. ( Id2416 , b/188564435 )
The setId method on NavDestination is now properly annotated with
@IdRes, so it only accepts resource ids. ( I69b80 )The int parameter of
findNodeis nowresIdinstead ofresid. ( I7711d )
Обновление зависимостей
- Safe-Args now depends on Android Gradle Plugin 4.2.0. This means you should no longer get the using
applicationIdTextResourcewarning. ( I6d67b , b/172824579 )
Версия 2.4.0-альфа01
18 мая 2021 г.
androidx.navigation:navigation-*:2.4.0-alpha01 is released. Version 2.4.0-alpha01 contains these commits.
Новые функции
- The
currentBackStackEntryAsFlow()method onNavControllerprovides aFlowthat emits whenever the currentNavBackStackEntrychanges. This flow can be used as an alternative to manually managing anOnDestinationChangedListener. ( I19c4a , #89 , b/163947280 )
Несколько задних стеков
The NavController is responsible for managing the back stack of destinations, adding destinations to the back stack when you navigate() to them and removing them when you call popBackStack() or trigger the system back button. The existing NavOptions class and the integration into <action> entries in the navigation graph XML has been expanded to support saving and restoring the back stack. ( b/80029773 )
As part of this change, the NavigationUI methods of onNavDestinationSelected() , BottomNavigationView.setupWithNavController() and NavigationView.setupWithNavController() now automatically save and restore the state of popped destinations, enabling support for multiple back stacks without any code changes. When using Navigation with Fragments, this is the recommended way to integrate with multiple back stacks. ( Ie07ca )
The underlying APIs for saving and restoring the state are exposed via a number of surfaces:
In Navigation XML, the
<action>element can now use the boolean attributes ofapp:popUpToSaveStateandapp:restoreStateto save the state of any destinations popped viaapp:popUpToand restore the state associated with the destination passed as theapp:destination:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />In the
navOptionsKotlin DSL , you can add therestoreStateboolean property and thesaveStateboolean property on thepopUpTobuilder :// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }In manually building a
NavOptionsobject via theNavOptions.Builder, you can use thesetRestoreState()and new overload tosetPopUpTo()that takes an additionalsaveStateparameter.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);Programmatic calls to
popBackStack()can now include an additionalsaveStateparameter.
In all cases, the NavController will save and restore the state of each NavBackStackEntry , including any navigation destination scoped ViewModel instances. The Navigator APIs have been updated to enable each Navigator to support saving and restoring their own state.
The ComposeNavigator used for composable destinations in Navigation Compose and the FragmentNavigator and DynamicFragmentNavigator used for <fragment> destinations in Navigation with Fragments have both been updated to use the new Navigator APIs and support saving and restoring state.
Маршруты навигации
A route is a String that uniquely identifies a destination. While previously only used in Navigation Compose , this concept has now graduated to become a part of the core Navigation APIs. This provides an alternative to using integer IDs when constructing your graph through the Navigation Kotlin DSL . ( b/172823546 )
All APIs that used to only take an ID now have an overload that takes a route String . This includes navigate() , popBackStack() , popUpTo() , and getBackStackEntry() .
This has had some API implications:
- The
popUpTokotlin property on the Kotlin DSL has been deprecated in favor ofpopUpToId. ( I59c73 , b/172823546 ) - The
getStartDestination()API has been deprecated in favor ofgetStartDestinationId(). ( I0887f , b/172823546 )
For developers upgrading from previous versions of Navigation Compose to Navigation Compose 2.4.0-alpha01 , this means that the following imports on extension methods are no longer necessary and should be removed:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
The KEY_ROUTE argument has been replaced with the route property on NavDestination , allowing you to call navBackStackEntry.destination.route directly.
Изменения API
- All Navigation artifacts have been rewritten in Kotlin. This has improved the nullability of classes using generics (such as
NavTypesubclasses). All Kotlin extension functions that used to be part of the-ktxartifacts have been moved to their respective main artifacts. The-ktxartifacts will continue to be published, but are completely empty. ( b/184292145 ) -
NavDeepLinkBuildernow supports adding multiple distinct destinations to the generated back stack. ( I3ee0d , b/147913689 ) - Add factory functions for
DynamicNavHostFragment( Icd515 , b/175222619 ) - The unique ID of a
NavBackStackEntryis now exposed as part of its public API. ( Ie033a ) - The
nameandargumentfields and destructuring functions ofNamedNavArgumentare now public. ( #174 , b/181320559 ) - Introduced a new
NavBackStackEntry#provideToCompositionLocalsextension that provides theNavBackStackEntryto the relevant composition locals. ( #175 , b/187229439 )
Safe Args
Safe Args now generates a
fromSavedStateHandle()method for eachNavArgsclass. ( #122 , b/136967621 )class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }Updated Safe Args to depend on KotlinPoet
1.8.0. ( #172 , b/183990444 )
Изменения поведения
- Navigation now depends on Lifecycle
2.3.1and now markssetGraph(),popBackStack(),navigateUp(), andnavigate(), the methods that update theNavBackStackEntryLifecycle, as@MainThread, aligning Navigation with the main thread enforcement introduced in Lifecycle2.3.0. ( b/171125856 ) - Parsing Enum arguments from deep links is now case insensitive, allowing a deep link like
http://www.example.com/redto match awww.example.com/{color}deep link even when the enum has the value ofRED. ( #152 , b/135857840 )
Compose Compatibility
-
androidx.navigation:navigation-compose:2.4.0-alpha01is only compatible with Compose version1.0.0-beta07and above.
Исправления ошибок
- Fixed an issue where trailing argument placeholders would take precedence over deep links that have a matching exact suffix. ( #153 , b/184072811 )
-
NavHostFragmentnow supports custom Navigators that use the same@Navigator.Name("dialog")as the defaultDialogFragmentNavigator. ( Ib1c2c , b/175979140 ) - Improved the behavior of
NavigatorProvider#addNavigatorto ensure that calling it repeatedly with the same instance does not cause issues. ( #176 , b/187443146 )
External Contributions
- Thanks simonschiller for building support for Safe Args generating a
fromSavedStateHandle()method for eachNavArgsclass. ( #122 , b/136967621 ) - Thanks Bradleycorn for making parsing Enum arguments from deep links case insensitive. ( #152 , b/135857840 )
- Thanks osipxd for fixing an issue where trailing argument placeholders would take precedence over deep links that have a matching exact suffix. ( #153 , b/184072811 )
- Thanks tatocaster for updating Safe Args to depend on KotlinPoet
1.8.0. ( #172 , b/183990444 ) - Thanks jossiwolf for making the
nameandargumentfields and destructuring functions ofNamedNavArgumentpublic. ( #174 , b/181320559 ) - Thanks jossiwolf for introducing a new
NavBackStackEntry#provideToCompositionLocalsextension that provides theNavBackStackEntryto the relevant composition locals. ( #175 , b/187229439 ) - Thanks jossiwolf for improved the behavior of
NavigatorProvider#addNavigatorto ensure that calling it repeatedly with the same instance does not cause issues. ( #176 , b/187443146 )
Navigation Compose Version 1.0.0
Версия 1.0.0-альфа10
7 апреля 2021 г.
androidx.navigation:navigation-compose:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.
Изменения API
-
NavHostnow accepts aModifier, which is passed down to the composable container that wraps the destination composables. ( I85aca , b/175125483 )
Исправления ошибок
-
NavHostnow works even when anOnBackPressedDispatcherOwneris not found, such is the case when previewing theNavHost. ( I7d8b4 ) - Navigation Compose now depends on Navigation
2.3.5, fixing an issue when usingBackHandlerinside aNavHostdestination. ( I7e63b , b/182284739 )
Версия 1.0.0-альфа09
10 марта 2021 г.
androidx.navigation:navigation-compose:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.
Изменения API
-
LocalViewModelStoreOwner.currentnow returns a nullableViewModelStoreOwnerto better determine whether aViewModelStoreOwneris available in the current composition. APIs that require aViewModelStoreOwner, such asviewModel()andNavHost, still throw an exception if aViewModelStoreOwneris not set. ( Idf39a )
Исправления ошибок
- Navigation Compose now depends on Navigation 2.3.4 which includes the fix for attempting to set the same ViewModelStore object after the graph has been set. ( I65c24 , b/177825470 )
Версия 1.0.0-альфа08
24 февраля 2021 г.
androidx.navigation:navigation-compose:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.
Новые функции
-
NavHostnow populates theLocalSavedStateRegistryOwnerCompositionLocal with that destination'sNavBackStackEntry, ensuring that any state directly saved into theSavedStateRegistrywill be saved and restored alongside the destination. ( I435d7 , b/179469431 )
Версия 1.0.0-альфа07
10 февраля 2021 г.
androidx.navigation:navigation-compose:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.
Обновления зависимостей
- Navigation Compose now depends on Lifecycle ViewModel Compose 1.0.0-alpha01 to provide
viewModel()support tocomposabledestinations. ( I7a374 ) -
NavHostnow uses the newLocalOnBackPressedDispatcherOwnerfrom Activity-Compose 1.3.0-alpha01 to get theOnBackPressedDispatcherthat is set on theNavController. ( I65b12 )
Версия 1.0.0-альфа06
28 января 2021 г.
androidx.navigation:navigation-compose:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.
Изменения API
- Added a
getBackStackEntry(route: String)extension method onNavControllerthat returns the associatedNavBackStackEntry. ( If8931 )
Версия 1.0.0-альфа05
13 января 2021 г.
androidx.navigation:navigation-compose:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.
Updated to depend on Compose 1.0.0-alpha10.
Версия 1.0.0-альфа04
16 декабря 2020 г.
androidx.navigation:navigation-compose:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits.
- Updated for compatibility with Compose
1.0.0-alpha09.
Версия 1.0.0-альфа03
2 декабря 2020 г.
androidx.navigation:navigation-compose:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.
Исправления ошибок
- Fixed an issue where
popBackStack()andnavigateUp()would not work after a configuration change or process death and recreation. ( Icea47 , b/173281473 ) - Navigating to a nested graph within your NavHost now works properly. ( I0948d , b/173647694 )
Версия 1.0.0-альфа02
11 ноября 2020 г.
androidx.navigation:navigation-compose:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.
Изменения API
- Navigation compose now support NavOptions for using popUpTo and launchSingleTop operations ( If96c3 , b/171468994 )
- Added a navigation function that takes a route instead of an ID that allows you to construct nested graphs in the Navigation Compose DSL. ( I1661d )
- startDestination now comes before the route in the list of a parameters for a NavHost ( Ie620e )
- You can now create a graph using the route as a start destination outside of a NavHost composable. ( Iceb75 )
Версия 1.0.0-альфа01
28 октября 2020 г.
android.navigation:navigation-compose:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits.
Новые функции
The navigation-compose artifact provides integration between the Navigation Component and Jetpack Compose . It uses @Composable functions as the destinations in your application.
This initial release provides:
- A
NavHostcomposable that allows you to construct your navigation graph via a Kotlin DSL. - Scoping of lifecycle,
ViewModel, and remembered state at the destination level. - Automatic integration with the system back button.
- Support for passing arguments, attaching deep links to destinations, and returning a result to previous destinations.
- Compose specific helpers in
rememberNavController()andcurrentBackStackEntryAsState()to allow hoisting state and connecting theNavControllerto composables outside of theNavHost(such as a bottom navigation bar).
See the Compose Navigation guide for more information.
Версия 2.3.5
Версия 2.3.5
7 апреля 2021 г.
androidx.navigation:navigation-*:2.3.5 is released. Version 2.3.5 contains these commits.
Новые функции
- When navigating using a
NavDeepLinkRequestorUri, you can now access theUri, action, and mime type in the resulting destination by getting the intent from arguments viaKEY_DEEP_LINK_INTENT, mirroring the functionality already available for external deep linking. ( I975c3 , b/181521877 )
Исправления ошибок
-
OnBackPressedCallbacksadded to a dispatcher with theNavBackStackEntryas the LifecycleOwner now properly intercept back after the Activity Lifecycle isSTOPPED, thenSTARTED( Iff94f , b/182284739 ) - Deep link domain parsing is now case insensitive, ensuring that
www.example.commatches bothwww.example.comandwww.Example.com. Note that query parameter names are still case sensitive. ( #144 , b/153829033 ) - Fixed a
NullPointerExceptionthat could occur when a destination has multiple non-nullable default arguments and you navigate to that destination while only overriding a subset of those arguments. ( aosp/1644827 )
Обновления зависимостей
- The Navigation Safe Args Gradle Plugin now depends on Kotlin Gradle Plugin 1.4.31. ( aosp/1661058 , b/181156413 )
Внешний вклад
- Thanks
bentrengrovefor the pull request making deep link domain parsing case insensitive. ( #144 , b/153829033 )
Версия 2.3.4
Версия 2.3.4
10 марта 2021 г.
androidx.navigation:navigation-*:2.3.4 is released. Version 2.3.4 contains these commits.
Новые функции
-
ReferenceTypearguments can now be properly parsed when sent as part of a deeplink URI. This supports both the raw integer value as well as hex values prefixed by0x. ( #127 , b/179166693 ) - The
android:defaultValuefor an argument withapp:argType="float"now supports integer default values, allowing you to useandroid:defaultValue="0"rather than requiring the use of0.0. ( #117 , b/173766247 )
Исправления ошибок
- Fix stuck installation progress when using Navigation's support for dynamic features. ( Ib27a7 , b/169636207 )
- Calling
setViewModelStoreorsetLifecycleOwnerwith the same object that has already been set will now be a no-op ( Idf491 , b/177825470 ) - Safe-Args now adds suppress annotations on the proper methods when using java. ( I8fbc5 , b/179463137 )
External Contributions
- Thanks
JvmNamefor the pull request to ensure thatReferenceTypearguments can now be properly parsed when sent as part of a deeplink URI. ( #127 , b/179166693 ) - Thanks
tatocasterfor the pull request to allow thedefaultValuefor an argument withapp:argType=”float”now supports integer default values. ( #117 , b/173766247 )
Версия 2.3.3
Версия 2.3.3
27 января 2021 г.
androidx.navigation:navigation-*:2.3.3 is released. Version 2.3.3 contains these commits.
Исправления ошибок
- There is no longer a crash when popping a
NavBackStackEntrybefore itsLifecycleis moved toCREATED. ( Ie3ba3 ) - Fixed regression caused by b/171364502 where navigating to an activity with an animation resource value of
0caused aResourceNotFoundException. ( I7aedb , b/176819931 )
Версия 2.3.2
Версия 2.3.2
2 декабря 2020 г.
androidx.navigation:navigation-*:2.3.2 is released. Version 2.3.2 contains these commits.
Исправления ошибок
- Fixed a regression in
NavigationUIwhere using an<activity>destination withonNavDestinationSelectedwould fail to navigate to the Activity. ( I22e34 , b/171364502 ) - Fixed an issue where
navigation-dynamic-features-fragmentwould result in navigating to the newly installed destination multiple times. ( aosp/1486056 , b/169636207 ) - Fixed an issue where default arguments would not be sent to
OnDestinationChangedListenerinstances when usinglaunchSingleTop. ( I2c5cb ) - Fixed an issue where navigating to a nested navigation graph would not create a new graph instance on the back stack. ( Ifc831 )
- Fixed an issue where using
navigate()with apopUpTothat removed the last destination in a navigation graph would not immediately destroy and remove the navigation graph itself from the back stack. ( I910a3 ) - Navigation SafeArgs now uses KotlinPoet version 1.7.2 which adds support for Kotlin's explicit API mode. ( I918b5 )
-
NavHostFragment.findNavController(Fragment)now also checks the root decor view of a DialogFragment in addition to the existing checks of the Fragment hierarchy and Fragment's view hierarchy. This allows you to test dialog fragments that use Navigation withFragmentScenarioandNavigation.setViewNavController(). ( I69e0d )
Версия 2.3.1
Версия 2.3.1
14 октября 2020 г.
androidx.navigation:navigation-*:2.3.1 is released. Version 2.3.1 contains these commits.
Новые функции
- Default Animator resources have been added to Navigation UI and are recommended over the default animation resources. ( b/167430145 )
- NavOptions now overrides the hashcode and equals methods ( b/161586466 )
- Navigation now includes the current destination in the “No destination with ID” IllegalArgumentException, which should improve the developer debugging experience. ( b/168311416 )
Исправления ошибок
- Safe Args will no longer wrap the return line, even if the generated argument class name is longer than 100 characters. ( b/168584987 )
Изменения зависимости
-
navigation-uinow depends on DrawerLayout 1.1.1 , ensuring thatNavigationUIis able to open the drawer even when usingLOCK_MODE_LOCKED_CLOSEDorLOCK_MODE_LOCKED_OPEN. ( b/162253907 ) - Safe Args now depends on KotlinPoet 1.6.0 ( aosp/1435911 )
- Safe Args now depends on AGP 4.0.1 ( aosp/1442337 )
Версия 2.3.0
Версия 2.3.0
24 июня 2020 г.
androidx.navigation:navigation-*:2.3.0 is released. Version 2.3.0 contains these commits.
Major changes since 2.2.0
- Feature Module integration : The
navigation-dynamic-features-runtimeandnavigation-dynamic-features-fragmentartifacts allow you to navigate to destinations that are defined in feature modules, automatically handling the installation of the feature modules as needed. See Navigate with feature modules for more information. - Navigation Testing : The
navigation-testingartifact provides aTestNavHostControllerthat allows you to set the current destination and verify the back stack after navigation operations. See Test Navigation for more information. - Returning a Result : The
NavBackStackEntryassociated with each destination on the Navigation back stack now allows you to access aSavedStateHandlesuitable for storing small amounts of saved state that should be associated with a particular back stack entry. See Returning a result to the previous Destination for more information. -
NavigationUIsupport forOpenable: All usages ofDrawerLayoutinNavigationUIhave been replaced with the more genericOpenableinterface added in CustomView1.1.0and implemented byDrawerLayoutin DrawerLayout1.1.0. - Action and Mime Type support in deep links : Deep linking has been expanded to support
app:actionandapp:mimeTypein addition to theapp:uripreviously available.NavControllernow supports navigating by any combination of these fields via the newNavDeepLinkRequestclass. See Navigate using NavDeepLinkRequest for more information.
Известные проблемы
- Support for deep link actions and mime types is not yet available in Manifest Merger . Until that work is completed, any generated
<intent-filter>elements from the<nav-graph>element in your manifest won't include your mime type in its<data>element or your custom<action>. You must manually add an appropriate<intent-filter>to your manifest.
Version 2.3.0-rc01
10 июня 2020 г.
androidx.navigation:navigation-*:2.3.0-rc01 is released. Version 2.3.0-rc01 contains these commits.
Исправления ошибок
- Fixed a
NullPointerExceptionwhen replacing an instance of a destination with no arguments with another instance with arguments withsingleTop. ( b/158006669 ) - All
destination is unknownexceptions thrown byNavControllernow have additional debugging information to help determine the state of theNavController. ( b/157764916 )
Version 2.3.0-beta01
20 мая 2020 г.
androidx.navigation:navigation-*:2.3.0-beta01 are released. Version 2.3.0-beta01 contains these commits.
Исправления ошибок
- Fixed an issue where the
Lifecycleof theNavBackStackEntrywould not be properly updated after process death. ( b/155218371 ) -
OnDestinationChangedListenerinstances registered before callingsetGraph()are now properly sent the restored destination after a process death. ( b/155218371 ) - When using
singleTop, theNavBackStackEntrynow correctly has its arguments updated and the updated arguments are sent to allOnDestinationChangeListenerinstances. ( b/156545508 )
Обновления зависимостей
- The
NavigationUIartifact now depends on CustomView1.1.0-rc01and DrawerLayout1.1.0-rc01. ( aosp/1309696 )
Version 2.3.0-alpha06
29 апреля 2020 г.
androidx.navigation:navigation-*:2.3.0-alpha06 is released. ( Version 2.3.0-alpha06 contains these commits. )
Новые функции
- Deep linking has been expanded to support
app:actionandapp:mimeTypein addition to theapp:uripreviously available. NavController now supports navigating by any combination of these fields via the newNavDeepLinkRequestclass. ( b/136573074 , b/135334841 )
Изменения API
- Greatly expanded the Kotlin DSL support for Dynamic Navigation destinations. ( b/148969800 )
Исправления ошибок
- Fixed an issue where deep link Intents would be ignored when using a nested start destination. ( b/154532067 )
Version 2.3.0-alpha05
15 апреля 2020 г.
androidx.navigation:navigation-*:2.3.0-alpha05 is released. Version 2.3.0-alpha05 contains these commits.
Новые функции
- For dynamic graph includes using
<include-dynamic>, you no longer need to specifyapp:graphPackageand a default one will be used by addingmoduleNamesuffix to theapplicationIdafter a dot. If you do need to customize yourgraphPackage, an${applicationId}placeholder is now supported. ( b/152696768 ) - The Navigation Graph Kotlin DSL now exposes a
defaultArgumentsMapfor actions, mirroring the ability to set default values on<action>elements in Navigation XML files. ( b/150345605 )
Исправления ошибок
- From Navigation 2.2.2 : Fixed an
IllegalStateExceptionwhen deep linking to the start destination of your graph when you have multipleNavHostFragmentinstances in your Activity. ( b/147378752 )
Обновления зависимостей
- Navigation now depends on Fragment
1.2.4. ( aosp/1277325 ) - Dynamic Navigation now depends on Play Core
1.7.2. ( aosp/1282257 )
Версия 2.3.0-альфа04
18 марта 2020 г.
androidx.navigation:navigation-*:2.3.0-alpha04 is released. Version 2.3.0-alpha04 contains these commits.
Новые функции
- Added support for feature module activity and fragment destinations in the Navigation Kotlin DSL. ( b/148969800 )
Изменения API
- The
DynamicExtrasclass no longer uses a builder pattern and can now be constructed directly. ( aosp/1253671 ) -
DynamicActivityNavigatornow takes aContextin its constructor rather than anActivity. ( aosp/1250252 )
Исправления ошибок
-
NavigationUIno longer ignores empty labels (ie, a destination withandroid:label=””) and now correctly sets the title to an empty string. ( b/148679860 )
Обновления зависимостей
- The Navigation Dynamic Features artifacts now depend on Play Core
1.6.5. ( b/149556401 )
Версия 2.3.0-альфа03
4 марта 2020 г.
androidx.navigation:navigation-*:2.3.0-alpha03 is released. Version 2.3.0-alpha03 contains these commits.
Изменения API
- Instead of relying on the concrete
DrawerLayoutclass,AppBarConfigurationnow uses theOpenableinterface introduced in CustomView1.1.0-alpha02(whichDrawerLayoutimplements as of DrawerLayout1.1.0-alpha04), allowing you to use custom implementations ofOpenablewithNavigationUI. ( b/129030452 )
Исправления ошибок
- The
navigation-common-ktxProGuard rules now correctly only keep theNavArgsclasses that are used rather than allNavArgsinstances. ( b/150213558 )
Dependency changes
- Navigation has reverted its dependency on Core
1.2.0and now depends on Core1.1.0to avoid forcing developers to move to a newer dependency when Navigation does not depend on any new APIs in Core1.2.0.
Version 2.3.0-alpha02
19 февраля 2020 г.
androidx.navigation:navigation-*:2.3.0-alpha02 is released. Version 2.3.0-alpha02 contains these commits.
Новые функции
- The
NavBackStackEntrynow allows you to access aSavedStateHandlesuitable for storing small amounts of saved state that should be associated with a particular back stack entry. See Returning a result for an example use case. ( b/79672220 )
Изменения API
- Convenience methods of
getCurrentBackStackEntry()andgetPreviousBackStackEntry()have been added to make it easier to retrieve aNavBackStackEntryfor the current and previous destinations. ( b/79672220 )
Исправления ошибок
-
navigateUp()now passes the current destination's arguments and theKEY_DEEP_LINK_INTENTto the previous destination when launching your app on your own task stack. ( b/147456890 )
Dependency changes
- Navigation now depends on Core
1.2.0.
Версия 2.3.0-альфа01
5 февраля 2020 г.
androidx.navigation:navigation-*:2.3.0-alpha01 is released. Version 2.3.0-alpha01 contains these commits .
Новые функции
- The new
navigation-testingartifact provides aTestNavHostControllerclass. This class provides an alternative to using a mockNavControllerwhen testing Navigation that allows you to set the current destination and verify the back stack after navigation operations. ( b/140884273 ) - The new
navigation-dynamic-features-fragment(and its transitive dependency,navigation-dynamic-features-runtime) allows you to include destinations or entire navigation graphs (via<include-dynamic>) from feature modules , providing seamless installation of on-demand feature modules when navigating to those destinations. See Navigate with feature modules for more information. ( b/132170186 )
Исправления ошибок
- From Navigation
2.2.1: Deep links without query parameters now correctly ignore any query parameters rather than appending them to trailing{argument}elements or not matching the deep link. ( b/147447512 ) - From Navigation
2.2.1: Thenavigation-uiProGuard rules forDrawerArrowDrawablehave been updated to ensure thatandroid.enableJetifier=trueis not required. ( b/147610424 ) - From Navigation
2.2.1: Thenavigation-common-ktxmodule now has a unique manifest package name instead of sharing the same manifest package name asnavigation-runtime-ktx. ( aosp/1141947 )
Обновления зависимостей
- From Navigation
2.2.1: Navigation2.2.1now depends on Lifecycle ViewModel SavedState2.2.0and Fragment1.2.1.
Версия 2.2.2
Версия 2.2.2
15 апреля 2020 г.
androidx.navigation:navigation-*:2.2.2 are released. Version 2.2.2 contains these commits.
Исправления ошибок
- Fixed an
IllegalStateExceptionwhen deep linking to the start destination of your graph when you have multipleNavHostFragmentinstances in your Activity. ( b/147378752 ) -
NavigationUIno longer ignores empty labels (ie, a destination withandroid:label=””) and now correctly sets the title to an empty string. This was previously released in Navigation 2.3.0-alpha04 . ( b/148679860 ) - The
navigation-common-ktxProGuard rules now correctly only keep theNavArgsclasses that are used rather than allNavArgsinstances. This was previously released in Navigation 2.3.0-alpha03 . ( b/150213558
Обновления зависимостей
- Navigation now depends on Fragment
1.2.4. ( aosp/1277325 )
Версия 2.2.1
Версия 2.2.1
5 февраля 2020 г.
androidx.navigation:navigation-*:2.2.1 is released. Version 2.2.1 contains these commits .
Исправления ошибок
- Deep links without query parameters now correctly ignore any query parameters rather than appending them to trailing
{argument}elements or not matching the deep link. ( b/147447512 ) - The
navigation-uiProGuard rules forDrawerArrowDrawablehave been updated to ensure thatandroid.enableJetifier=trueis not required. ( b/147610424 ) - The
navigation-common-ktxmodule now has a unique manifest package name instead of sharing the same manifest package name asnavigation-runtime-ktx. ( aosp/1141947 )
Обновления зависимостей
- Navigation
2.2.1now depends on Lifecycle ViewModel SavedState2.2.0and Fragment1.2.1.
Версия 2.2.0
Версия 2.2.0
22 января 2020 г.
androidx.navigation:navigation-*:2.2.0 is released. Version 2.2.0 contains these commits .
Important changes since 2.1.0
- NavBackStackEntry : You can now call
NavController.getBackStackEntry(), passing in the ID of a destination or navigation graph on the back stack. The returnedNavBackStackEntryprovides a Navigation-drivenLifecycleOwner,ViewModelStoreOwner(the same returned byNavController.getViewModelStoreOwner()), andSavedStateRegistryOwner, in addition to providing the arguments used to start that destination. - Lifecycle ViewModel SavedState Integration :
SavedStateViewModelFactoryis now the default factory used when usingby navGraphViewModels()or theViewModelProviderconstructor with aViewModelStoreOwnerreturned byNavController.getBackStackEntry()orNavController.getViewModelStoreOwner(). - Query Parameter Support for Deep Links : Deep links with query parameters now support reordered query parameters; arguments that have a default value or are nullable are now optional when matching deep links.
- Improved Animation Support :
NavHostFragmentnow usesFragmentContainerViewfrom Fragment 1.2.0 , fixing animation z-ordering issues and window insets dispatching to Fragments.
Версия 2.2.0-rc04
18 декабря 2019 г.
androidx.navigation:navigation-*:2.2.0-rc04 is released. Version 2.2.0-rc04 contains these commits .
Исправления ошибок
- Adjusted the default fade animations used by
navigation-uito match the adjusted fade animations in Fragment1.2.0-rc04. ( b/145769814 )
Версия 2.2.0-rc03
4 декабря 2019 г.
androidx.navigation:navigation-*:2.2.0-rc03 is released. Version 2.2.0-rc03 contains these commits .
Исправления ошибок
- Fixed an issue with deep link parsing when using query parameters and an argument as the last part of the path that prevented more than one character of the final path argument from being parsed. ( b/144554689 )
- Fixed an issue with deep link parsing where optional parameters would receive
"@null"instead ofnull. ( b/141613546 ) -
NavHostFragmentnow correctly restores the graph after a configuration change when used withFragmentContainerView. ( b/143752103 )
Dependency changes
- Navigation now depends on Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03, Activity1.1.0-rc03, and Fragment1.2.0-rc03where appropriate.
Version 2.2.0-rc02
7 ноября 2019 г.
androidx.navigation:navigation-*:2.2.0-rc02 is released. Version 2.2.0-rc02 contains these commits .
Dependency changes
- Navigation now depends on androidx.lifecycle
2.2.0-rc02.
Версия 2.2.0-rc01
23 октября 2019 г.
androidx.navigation:navigation-*:2.2.0-rc01 is released with no changes since 2.2.0-beta01 . Version 2.2.0-rc01 contains these commits .
Версия 2.2.0-beta01
9 октября 2019 г.
androidx.navigation:navigation-*:2.2.0-beta01 is released. Version 2.2.0-beta01 contains these commits .
Новые функции
-
NavDestinationand its subclasses now overridetoString()to provide more helpful information when debugging. ( b/141264986 )
Изменения поведения
- Extra query parameters are now ignored when matching deep links rather than causing the match to fail. ( b/141482822 )
Исправления ошибок
- Fixed an issue where arguments in a deep link's path would be ignored if query parameters were also specified. ( b/141505755 )
- The
navArgs()Kotlin extension onActivitynow has a better error message when there are no extras. ( b/141408999 ) - Safe Args generated
DirectionsJava classes now contain default values. ( b/141099045 ) - Safe Args generated
ArgsJava classes now contain default values. ( b/140123727 ) - When using a
Toolbar,NavigationUIno longer animates the text change when moving between two top level destinations. ( b/140848160 )
Версия 2.2.0-альфа03
18 сентября 2019 г.
androidx.navigation:navigation-*:2.2.0-alpha03 is released. Version 2.2.0-alpha03 contains these commits .
Изменения поведения
- Calling
setViewModelStore()after callingsetGraphnow results in anIllegalStateException. This should always be set by theNavHostas part of the initial setup to ensure that allNavBackStackEntryinstances have a consistent storage forViewModelinstances. ( aosp/1111821 )
Исправления ошибок
- Fixed a
ConcurrentModificationExceptionwhen usingViewModelinstances attached to multiple different navigation graph scopedViewModelStoreinstances. ( aosp/1112257 )
Версия 2.2.0-альфа02
5 сентября 2019 г.
androidx.navigation:navigation-*:2.2.0-alpha02 is released. The commits included in this version can be found here .
Новые функции
- Deep links with query parameters now support reordered query parameters; arguments that have a default value or are nullable are now optional when matching deep links. ( b/133273839 )
- You can now call
NavController.getBackStackEntry(), passing in the ID of a destination or navigation graph on the back stack. The returnedNavBackStackEntryprovides a Navigation-drivenLifecycleOwner,ViewModelStoreOwner(the same returned byNavController.getViewModelStoreOwner()), andSavedStateRegistryOwner, in addition to providing the arguments used to start that destination. ( aosp/1101691 , aosp/1101710 )
Исправления ошибок
- Fixed an issue where adding a
NavHostFragmenttoViewPager2failed with anIllegalArgumentException. ( b/133640271 ) -
NavInflaternow avoids callinggetResourceName()unnecessarily, speeding up inflation time by up to 40%. ( b/139213740 )
Версия 2.2.0-альфа01
7 августа 2019 г.
androidx.navigation:navigation-*:2.2.0-alpha01 is released. The commits included in this version can be found here .
Новые функции
-
SavedStateViewModelFactoryis now the default factory used when usingby navGraphViewModels()or theViewModelProviderconstructor with aViewModelStoreOwnerreturned byNavController.getViewModelStoreOwner(). ( b/135716331 )
Изменения API
- From Navigation
2.1.0-rc01: The deprecatedgetViewModelStore()API onNavControllerintroduced in2.1.0-alpha02has been removed. ( aosp/1091021 )
Исправления ошибок
-
NavHostFragmentnow usesFragmentContainerView, fixing animation z-ordering issues and window insets dispatching to Fragments. ( b/137310379 )
Версия 2.1.0
Версия 2.1.0
5 сентября 2019 г.
androidx.navigation:navigation-*:2.1.0 is released. The commits included in this version can be found here .
Important changes since 2.0.0
- Scoping ViewModels to a navigation graph : You can now create ViewModels that are scoped at the navigation graph level using the
by navGraphViewModels()property delegate for Kotlin users using the-ktxlibraries or by using thegetViewModelStoreOwner()API added toNavController. See Share UI-related data between destinations for more information. - Dialog destinations : You can now create
<dialog>destinations that will show aDialogFragmentwhen younavigateto them.NavHostFragmentsupports dialog destinations by default. See Create a destination from a DialogFragment for more information. - Navigating by Uri : You can now
navigateusing aUri, which uses the<deepLink>you've added to a destination to navigate there. See Navigate using Uri for more information. - NavHostController : APIs used specifically for constructing a custom
NavHosthave been moved toNavHostController, allowing implementations to connect theirNavControllerto the hostingLifecycleOwner,OnBackPressedDispatcher, andViewModelStore.
Version 2.1.0-rc01
7 августа 2019 г.
androidx.navigation:navigation-*:2.1.0-rc01 is released. The commits included in this version can be found here .
Изменения API
- The deprecated
getViewModelStore()API onNavControllerintroduced in2.1.0-alpha02has been removed. ( aosp/1091021 )
Версия 2.1.0-beta02
19 июля 2019 г.
androidx.navigation:*:2.1.0-beta02 is released. The commits included in this version can be found here .
Исправления ошибок
- Removed unintentional jacoco dependency that was introduced in
2.1.0-beta01. ( b/137782950 )
Version 2.1.0-beta01
17 июля 2019 г.
androidx.navigation:*:2.1.0-beta01 is released. The commits included in this version can be found here .
Новые функции
-
NavigationUInow animates the removal of the Up button when usingsetupWithNavController()with aToolbarorCollapsingToolbarLayout. ( b/131403621 )
Исправления ошибок
- Fixed a timing issue when using multiple NavHostFragments with the same container with
findNavController(). ( b/136021571 )
Version 2.1.0-alpha06
2 июля 2019 г.
androidx.navigation:*:2.1.0-alpha06 is released. The commits included in this version can be found here .
Новые функции
- The
app:navGraphattribute used by NavHostFragment has now been moved to thenavigation-runtimeartifact. Custom navigators that can be added via XML should use this attribute to gain integration with the Navigation Editor's Host panel. ( b/133880955 )
Изменения API
- The
getViewModelStore()API onNavControllerhas been deprecated in favor of the newgetViewModelStoreOwner()method that returns aViewModelStoreOwner. ( aosp/987010 ) - The implementation of floating window destinations, such as
<dialog>destinations, has been generalized into a marker interface,FloatingWindow, that all<dialog>destinations now implement. NavigationUI methods for interacting with the top app bar now ignoreFloatingWindowdestinations. ( b/133600763 )
Изменения поведения
- Navigation now correctly keeps its state in sync with what is seen on the screen when using a
<dialog>destination. As a consequence, Navigation now automatically pops<dialog>destinations when you navigate to a non-dialog and non-activity destination, such as a<fragment>destination. ( b/134089818 )
Исправления ошибок
- Navigation now suppresses the animation that occurs when recreating the activity when handling a deep link, fixing a visual flash. ( b/130362979 )
- Fixed a bug where the Navigation back stack would be out of sync when popping a Fragment as the initial fragment is being added. ( b/133832218 )
Версия 2.1.0-альфа05
5 июня 2019 г.
androidx.navigation:*:2.1.0-alpha05 is released. The commits included in this version can be found here .
Изменения API
- Host related APIs on
NavControllerhave been renamed and moved to a new subclass ofNavController,NavHostController. ( aosp/966091 ) - The
NavControllersetHostOnBackPressedDispatcherOwner()method has been replaced withNavHostController'ssetOnBackPressedDispatcher()method and now requires that you callsetLifecycleOwner()prior to calling it. ( aosp/965409 ) -
NavHostControllernow contains aenableOnBackPressed(boolean)method that replaces theNavHostOnBackPressedManagerclass that was previously returned bysetHostOnBackPressedDispatcherOwner(). ( aosp/966091 )
Исправления ошибок
- Fixed an issue where the back stack was not correct after navigating by URI. ( b/132509387 )
- Deep links automatically handled by NavController now only trigger once. ( b/132754763 )
Версия 2.1.0-альфа04
16 мая 2019 г.
androidx.navigation:*:2.1.0-alpha04 is released. The commits included in this version can be found here .
Исправления ошибок
-
NavHostFragmentcorrectly respectsapp:defaultNavHostwhen intercepting the system Back button events, fixing a regression in Navigation2.1.0-alpha03. b/132077777 -
DialogFragmentNavigatornow correctly handlespopBackStack()andnavigateUp()operations. b/132576764 - Fixed an
IllegalStateException: unknown destination during restoreissue when repeatedly navigating between nested graphs. b/131733658
Version 2.1.0-alpha03
7 мая 2019 г.
androidx.navigation:*:2.1.0-alpha03 is released. The commits included in this version can be found here .
Известные проблемы
- NavHostFragment continues to intercept the system Back button despite using
app:defaultNavHost="false"b/132077777
Новые функции
- You can now create
<dialog>destinations that will show aDialogFragmentwhen younavigateto them.NavHostFragmentsupports dialog destinations by default. b/80267254 - In addition to calling
navigatewith a resource id or aNavDirectionsinstance, you can now navigate via aUri, which uses the<deepLink>you've added to a destination to navigate to the correct destination. b/110412864
Изменения поведения
- The default animations provided by NavigationUI have been sped up from 400ms to 220ms to match the default animation speed of activities and fragments. b/130055522
Изменения API
- The
createFragmentNavigator()method ofNavHostFragmenthas been deprecated and its functionality moved to the newonCreateNavController()method to make it more clear that this is the correct entry point of adding custom Navigators when subclassingNavHostFragment. b/122802849 - A
hasDeepLink()method has been added toNavDestinationto allow you to check if a givenUrican be handled by that destination or, in the case of aNavGraph, any destination in the navigation graph. b/117437718
Исправления ошибок
- Default arguments are now correctly passed to
OnDestinationChangedListenerinstances. b/130630686 -
NavHostFragmentnow intercepts system Back events using theOnBackPressedDispatcher, fixing an issue when doing conditional navigation in Fragment lifecycle methods upon returning to a Fragment. b/111598096 - For Safe Args, an
android:defaultValue=”@null”with an unspecifiedapp:argTypeis now properly inferred as astringargument. b/129629192
Версия 2.1.0-альфа02
3 апреля 2019 г.
androidx.navigation:*:2.1.0-alpha02 is released. The commits included in this version can be found here .
Новые функции
- You can now create ViewModels that are scoped at a navigation graph level via the
by navGraphViewModels()property delegate for Kotlin users or by using thegetViewModelStore()API added toNavController. b/111614463
Изменения API
- You can now add an
app:targetPackageto an<activity>destination to limit the matching package name. It supportsapp:targetPackage="${applicationId}"for restricting the package to your own application id. b/110975456
Исправления ошибок
- The
android:namefor<activity>destinations is no longer parsed into a Class at inflation time, preventing ClassNotFoundExceptions when using dynamic features. b/124538597
Версия 2.1.0-альфа01
19 марта 2019 г.
This is the first alpha release of Navigation 2.1.0 .
Dependency changes
- Navigation now depends on
androidx.core:core:1.0.1andandroidx.fragment:fragment:1.1.0-alpha05. This release also removes the dependency onandroidx.legacy:legacy-support-core-utils:1.0.0. b/128632612
Изменения API
- A new
Navigation.createNavigateOnClickListener(NavDirections)method has been added as an alternative to creating a click listener with a resource ID and Bundle. b/127631752 -
FragmentNavigator.instantiateFragmentis now deprecated. The default implementation now usesFragmentFactoryto instantiate Fragments. b/119054429
Исправления ошибок
- Navigation no longer sends a null
Bundlewhen there are arguments attached to a destination, fixing an issue when usingandroid:defaultValue="@null". b/128531879 - Safe Args now depends on KotlinPoet 1.1.0, fixing an issue with extremely long package names. b/123654948
Версия 2.0.0
Версия 2.0.0
14 марта 2019 г.
Navigation 2.0.0 is released with no changes from 2.0.0-rc02 .
Версия 2.0.0-rc02
6 марта 2019 г.
Navigation 2.0.0-rc02 provides new artifacts with the androidx.navigation group ID and changes its dependencies to the AndroidX equivalents.
The behavior of 2.0.0-rc02 is identical to behavior to Navigation 1.0.0-rc02 and no changes to your code should be required to update from 1.0.0-rc02 besides updating your dependencies to match the new dependencies .
Your project must have migrated to AndroidX to use 2.X releases of Navigation. Navigation 1.0 stable will be the last release using the Support Library dependencies; all future development beyond 1.0 will be based on AndroidX and build upon the 2.0 stable release.
Pre-AndroidX Dependencies
For the pre-AndroidX versions of Navigation, include these dependencies:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
For Safe args , add the following classpath in your top level build.gradle file
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
Версия 1.0.0
Версия 1.0.0
14 марта 2019 г.
Navigation 1.0.0 is released with no changes from 1.0.0-rc02 .
Версия 1.0.0-rc02
26 февраля 2019 г.
This is the second release candidate for Navigation's 1.0.0 stable release. This release contains a number of bug fixes.
Исправления ошибок
- Fixed an issue where
popBackStack()would be ignored if the root graph did not have an ID b/126251695 -
navigateUp()now correctly handles navigating back to your app's task when called after handling a deep link withoutFLAG_ACTIVITY_NEW_TASKb/126082008 - Fixed an issue with
ActivityNavigator.applyPopAnimationsToPendingTransitionnot applying the correct pop exit animation b/126237567 - Kotlin code generated by Safe Args now properly escapes Kotlin keywords such as
inandfunin the package name associated with theRclass. b/126020455
Версия 1.0.0-rc01
21 февраля 2019 г.
This is a release candidate for Navigation's 1.0.0 stable release. This release contains one bug fix.
Исправления ошибок
- Fixed an issue when using Fragments and
singleTopnavigation operations b/124294805
Версия 1.0.0-beta02
12 февраля 2019 г.
This release includes a number of minor improvements and important bug fixes.
Новые функции
- You can now use
0as anandroid:defaultValueforreferencearguments. b/124248602
Изменения поведения
- Exact deep link matches are now prioritized over deep links with
.*or argument matches. b/123969518
Исправления ошибок
-
popBackStack()andnavigateUpnow correctly returnfalsewhen popping the last destination on the back stack, fixing a regression introduced in1.0.0-beta01. b/123933201 - Navigation now correctly sets the
ClassLoaderduring restoration of saved instance state, avoiding issues when using custom classes inNavigatorsaved state or in arguments sent to aNavDestination. b/123893858 - Safe Args generated NavArgs classes no longer crash when restoring a
Parcelable[]argument from saved instance state. b/123963545 - Safe Args now properly cleans up unnecessary generated Kotlin classes. b/124120883
Версия 1.0.0-beta01
4 февраля 2019 г.
This is the first beta release of Navigation; moving forward, the Navigation API is expected to stay stable until the next version unless there is a critical problem. This release contains some bug fixes and behavior changes.
Изменения поведения
- Navigation now ensures that argument default values are treated identically at runtime and through Safe Args. As a consequence, only arguments with an
app:argType="reference"can have a default value point to another resource (for example,@color/colorPrimary). Attempting to use a reference default value with a differentapp:argTypewill result in an exception when parsing the navigation XML. b/123551990 - Safe Args now depends on Android Gradle Plugin 3.3.0 aosp/888413
- Safe Args now depends on Kotlin 1.3.20 aosp/888414
Исправления ошибок
- Safe Args can now be used in library and feature modules on all versions of the Android Gradle Plugin. b/121304903
- Fixed a regression that would cause a single
popBackStack()operation to pop all copies of a destination off the top of the back stack, rather than just a single destination at a time. b/123552990 - Fixed an issue where the
FragmentNavigatorstate would desynchronize with theNavController's state, causing anIllegalStateExceptionwhen attempting to restore the back stack. b/123803044 - Fixed an issue where the
NavigationUIhandled back arrow would not appear when using ProGuard with obfuscation. b/123449431 - The code generated by Safe Args now properly handles using an
app:argTypepointing to a static inner class in the format.OuterClass$InnerClass. b/123736741 - The Java code generated by Safe Args now properly handles global actions and deeply nested destinations. b/123347762
Версия 1.0.0-альфа11
23 января 2019 г.
This is a hotfix release of 1.0.0-alpha10 that fixes an issue with Safe Args.
Исправления ошибок
- Fixes an issue where Safe Args would fail to import the Directions class associated with global actions. b/123307342
Версия 1.0.0-альфа10
23 января 2019 г.
Известные проблемы
- Safe Args fails to import the Directions class associated with global actions. b/123307342
This release contains breaking API changes; please see the Breaking Changes section below.
Новые функции
- Kotlin users can now use the
by navArgs()property delegate to lazily get a reference to a Safe Args generatedNavArgsclass in anActivityorFragment. b/122603367 - Safe Args now allows you to generate Kotlin code by applying the
androidx.navigation.safeargs.kotlinplugin. The Kotlin code is built specifically for Kotlin only modules, using default arguments and immutable classes over the builder pattern that is still available via the previousandroidx.navigation.safeargsplugin. b/110263087
Изменения поведения
- Matching deep links are now biased towards the deep link that has the most matching arguments. b/118393029
- Calling
setGraph()on aNavControllerwill now reset the back stack. b/111450672 - Unknown deep links no longer throw an
IllegalStateException, but are ignored, fixing issues with nested or multipleNavHostFragments. b/121340440
Критические изменения
- The
NavOptions.applyPopAnimationsToPendingTransition()method for applying pop animations to an Activity has been moved toActivityNavigator. b/122413117 - Safe Args now avoids duplicating identical classes for actions without arguments. The return type for no argument methods in generated NavDirections classes is now
NavDirections. b/123233147 - Safe Args generated Directions classes no longer have a public constructor - you should only be interacting with the generated static methods. b/123031660
- Safe Args generated
NavDirectionsclasses no longer have a public constructor - they should only be generated via the static methods in the generated Directions classes. b/122963206 - The returned
BundlefromNavDirections'getArguments()is now marked as@NonNullrather than@Nullable. b/123243957
Исправления ошибок
-
NavDeepLinkBuildernow correctly handles multiple simultaneousPendingIntents to the same destination by using the arguments you pass in to determine the uniqueness. b/120042732 -
NavControllernow correctly handlespopBackStack()operations when using a nestedNavHostFragmentor other child Fragments with a back stack. b/122770335 -
NavigationUInow correctly sets the content description of the Up button. b/120395362 - Safe Args generated Directions classes now correctly handle global actions that have the same id as an action on a destination. b/122962504
- Safe Args generated
NavDirectionsclasses now correctly have equalhashCode()values whenequals()would return true. b/123043662 -
FragmentNavigatornow throws a better error message if you attempt to do customFragmentTransactionson theNavHostFragment'sFragmentManager. You should always usegetChildFragmentManager(). b/112927148
Версия 1.0.0-альфа09
18 декабря 2018 г.
This release contains breaking API changes; please see the Breaking Changes section below.
We have chosen not to continue development of the android.arch.navigation:navigation-testing artifact. While it has proven helpful for internal testing of NavController , we strongly recommend alternate testing strategies, such as mocking the NavController instance in order to verify that the correct navigate() calls are being done. This approach is discussed in detail in the Single Activity talk at AndroidDevSummit 2018 and we'll be working on additional documentation specifically around testing with Navigation.
Новые функции
-
MenuItems withmenuCategory="secondary"will no longer pop the back stack when used withNavigationUImethods. b/120104424 -
AppBarConfigurationnow allows you to set a fallbackOnNavigateUpListenerinstance which will be called whennavController.navigateUp()returnsfalse. b/79993862 b/120690961
Критические изменения
- When using an
<argument>with anargType="reference", Navigation no longer parses the reference, instead providing the raw resource ID itself. b/111736515 -
onNavDestinationSelected()now pops back to the start destination of your navigation graph by default, making them consistent with thesetupmethods. AddmenuCategory="secondary"to yourMenuItemto avoid popping the back stack. aosp/852869 - The
fromBundle()methods of generatedArgsclasses now take a non-nullBundleinstead of a nullableBundleaosp/845616
Исправления ошибок
- Arguments are now properly parsed from deep links as the correct
argTypeinstead of always as strings b/110273284 - Navigation now correctly exports its public resources b/121059552
- Safe Args is now compatible with Android Gradle Plugin 3.4 Canary 4 and higher b/119662045
Версия 1.0.0-альфа08
6 декабря 2018 г.
This release contains breaking API changes; please see the Breaking Changes section below.
Новые функции
- Destination labels, when used with
NavigationUImethods, will now automatically replace{argName}instances in yourandroid:labelwith the correct argument b/80267266 - Navigation now depends on Support Library 28.0.0 b/120293333
Критические изменения
-
OnNavigatedListenerhas been renamed toOnDestinationChangedListenerb/118670572 -
OnDestinationChangedListenernow also passes theBundleof arguments aosp/837142 - The
app:clearTaskandapp:launchDocumentattributes and their associated methods have been removed. Useapp:popUpTowith the root of your graph to remove all destinations from your back stack. b/119628354 -
ActivityNavigator.Extrasnow uses aBuilderpattern and adds the ability to set anyIntent.FLAG_ACTIVITY_flags aosp/828140 -
NavController.onHandleDeepLinkhas been renamed tohandleDeepLinkaosp/836063 - Many classes and methods not meant for subclassing, such as
NavOptions,NavInflater,NavDeepLinkBuilder, andAppBarConfiguration, have been madefinalaosp/835681 - The deprecated
NavHostFragment.setGraph()method has been removed aosp/835684 - The deprecated
NavigationUI.navigateUp(DrawerLayout, NavController)method has been removed. aosp/835684 - Fragment creation has been moved to
FragmentNavigator, making it easier to delegate Fragment creation to aFragmentFactory. b/119054429 - The constructor for
NavGraphNavigatorno longer takes aContextaosp/835340 - NavigatorProvider is now a class, rather than an interface. The
NavigatorProviderreturned bygetNavigatorProvider()has not changed its functionality. aosp/830660 -
NavDestination.navigate()has been removed. Callnavigate()on theNavigatorinstead. aosp/830663 - Significant refactoring of
Navigator, removing the need forOnNavigatorNavigatedListenerand instead havingnavigatereturn theNavDestinationthat was navigated to. -
Navigatorinstances can no longer send pop events to theNavController. Consider using aOnBackPressedCallbackto intercept back button presses and callnavController.popBackStack(). aosp/833716
Исправления ошибок
-
popUpTonow works consistently when the destination is a<navigation>element b/116831650 - Fixed a number of bugs that resulted in an
IllegalArgumentExceptionwhen using nested graphs b/118713731 b/113611083 b/113346925 b/113305559 - The
dataPatternattribute of<activity>destinations will now populate arguments from non-String arguments by callingtoString()b/120161365
Safe Args
- Safe Args supports Serializable objects, including Enum values. Enum types can set a default value by using the enum literal without the class name (eg
app:defaultValue="READ") b/111316353 - Safe Args supports arrays of all supported types b/111487504
- Safe Args now ignores subfolders of resource directories b/117893516
- Safe Args adds
@Overrideannotations where appropriate b/117145301
Версия 1.0.0-альфа07
29 октября 2018 г.
Новые функции
- A new AppBarConfiguration class allows you to customize which destinations are considered top-level destinations. See the updated documentation for details. b/117333663
- You can now pass arguments to the start destination of your graph b/110300470
- Deep links now support custom schemes with periods, hyphens, and plus signs. b/112806402
Критические изменения
- The
navigation-testing-ktxmodule has been folded into thenavigation-testing artifactand will no longer be published. - The
navigation-testingartifact now has a dependency on the Kotlin standard library. The API has been changed to be more consistent with Kotlin conventions, but you can continue to use it for tests written in Java. - Metadata manifest registered navigation graphs are no longer supported. b/118355937
- Actions can no longer be attached to <activity> destinations. aosp/785539
Исправления ошибок
- Deep links now correctly parse query parameters. b/110057514
- Activity destinations now correctly apply all enter and exit animations. b/117145284
- Fixed crash that occurs after configuration changes when using custom Navigators. b/110763345
Safe Args
- Safe args now have a fixed dependency on Android Gradle Plugin 3.2.1. b/113167627
- Directions can now be generated for inner classes. b/117407555
- Fixed an issue with generating Directions to an <include> graph. b/116542123
Версия 1.0.0-альфа06
20 сентября 2018 г.
Новые функции
- Shared Element Transitions for Fragment and Activity destinations are now supported b/79665225 . For more information, see Implement navigation with the Navigation Architecture Component
- Selecting an item in
NavigationViewwill now close any containing bottom sheet b/112158843
Изменения API
- Breaking Change: The Navigator
navigate()method now takes aNavigator.Extrasparameter. - NavController's
getGraph()method is nowNonNullb/112243286
Исправления ошибок
-
NavigationUI.setupWithNavController()no longer leaks views if used with views from individual destinations b/111961977 - Navigator
onSaveState()is now only called once b/112627079
Safe Args
- Navigation destination Directions classes now extend their parent's Directions class if it exists b/79871405
- Directions and Args classes now have a useful
toString()implementation b/111843389
Версия 1.0.0-альфа05
10 августа 2018 г.
Исправления ошибок
- Fix a bug which cause incorrect backstack behavior. b/111907708
- Fix a bug in
equals()of Generated Args classes. b/111450897 - Fix a build failure in Safe Args. b/109409713
- Fix a conversion from resource identifiers to java names b/111602491
- Fix error messages about nullability in Safe Args plugin.
- Add missing nullability annotations.
Версия 1.0.0-альфа04
19 июля 2018 г.
Navigation 1.0.0-alpha04 and the associated Safe Args gradle plugin contains a number of API changes, behavior changes, and bug fixes.
API / Behavior Changes
- NavHostFragment will always set the current Fragment as the primary navigation fragment, ensuring that child fragment managers are popped before the outer NavController is popped b/111345778
Safe Args
- Breaking Change:
app:typehas been changed toapp:argTypeto avoid conflicts with other libraries such as ConstraintLayout 2.0.0-alpha1 b/111110548 - Error messages from Safe Args are now clickable b/111534438
- Args classes now confirms that
NonNullattributes are actually not null b/111451769 - Additional
NonNullannotations have been added to NavDirections and Args generated classes b/111455455 b/111455456
Исправления ошибок
- Fixed an issue with the system back button after deep linking to a fragment destination b/111515685
Версия 1.0.0-альфа03
12 июля 2018 г.
Navigation 1.0.0-alpha03 and the associated Safe Args gradle plugin contains a number of API changes, behavior changes, and bug fixes.
API / Behavior Changes
- A NavigationUI.setupWithNavController method for Toolbar has been added b/109868820
- A NavigationUI.setupWithNavController method for CollapsingToolbarLayout has been added b/110887183
- popBackStack() now returns false when the back stack is empty or when the given destination ID is not in the back stack b/110893637
- FragmentNavigator now ignores navigation operations after FragmentManager has saved state, avoiding “Can not perform this action after onSaveInstanceState” exceptions b/110987825
Safe Args
- Breaking Change: Non-alphanumeric characters in action and argument names will be replaced by camel casing in the respective NavDirections method names
- Eg
DemoController.indexwill becomesetDemoControllerIndexb/79995048 - Eg
action_show_settingswill becomeactionShowSettingsb/79642240
- Eg
- Breaking Change: Arguments are now considered non-null by default. To allow null values on string and parcelable arguments, add
app:nullable="true"b/79642307 - You can now use
app:type="long"with defaultValues in the form of “123L” b/79563966 - Parcelable arguments are now supported, using a fully qualified class name for
app:type. The only default value supported is"@null"b/79563966 - Args classes now implement
equals()andhashCode()b/79642246 - The Safe Args plugin can now be applied to library projects b/80036553
- The Safe Args plugin can now be applied to feature projects b/110011752
Исправления ошибок
- Fixed issues when navigating during Fragment lifecycle methods b/109916080
- Fixed issues when navigating through nested graphs multiple times b/110178671
- Fixed issues when using
setPopUpTowith the first destination in the graph b/109909461 - Fixed issue where all
app:defaultValuevalues were being passed as Strings b/110710788 - aapt2 bundled with Android Gradle Plugin 3.2 Beta 01 now adds keep rules for every
android:nameattribute in Navigation XML files b/79874119 - Fixed memory leak when replacing the default FragmentNavigator b/110900142
Версия 1.0.0-альфа02
7 июня 2018 г.
Изменения поведения
FragmentNavigatornow usessetReorderingAllowed(true). b/109826220Navigation now URLDecodes arguments parsed from deep links URLs. b/79982454
Исправления ошибок
Fixed an
IllegalStateExceptionwhen calling navigate from Fragment lifecycle methods. b/79632233Navigation now depends on Support Library 27.1.1 to fix flickering when using animations. b/80160903
Fixed an
IllegalArgumentExceptionwhen using defaultNavHost="true" as a child fragment. b/79656847Fixed a
StackOverflowErrorwhen using NavDeepLinkBuilder. b/109653065Fixed an
IllegalArgumentExceptionwhen navigating back to a nested graph. b/80453447Fixed an issue with overlapping Fragments when using
launchSingleTop. b/79407969Navigation now builds the correct synthetic back stack for nested graphs. b/79734195
NavigationUI will now highlight the correct item when using a nested graph as a
MenuItem. b/109675998
Изменения API
The
clearTaskattribute for actions and the associated API inNavOptionshas been deprecated. b/80338878The
launchDocumentattribute for actions and the associated API inNavOptionshas been deprecated. b/109806636
Версия 1.0.0-альфа01
8 мая 2018 г.
Navigation provides a framework for building in-app navigation. This initial release is 1.0.0-alpha01 .