Navegação
androidx.navigation
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
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
|---|---|---|---|---|
| 24 de setembro de 2025 | 2.9.5 | - | - | - |
Declarar dependências
Para adicionar uma dependência à Navigation, é preciso adicionar o repositório Maven do Google ao seu projeto. Leia Repositório Maven do Google para ver mais informações.
Adicione as dependências dos artefatos necessários no arquivo build.gradle para
seu app ou módulo:
Groovy
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" }
Kotlin
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
Para adicionar Safe Args
ao seu projeto, inclua o seguinte classpath no seu arquivo build.gradle de nível superior:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.5" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.5" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Você também precisa aplicar um dos dois plug-ins disponíveis.
Para gerar um código de linguagem Java adequado para módulos Java ou Java e Kotlin mistos, adicione
esta linha ao arquivo build.gradle do seu app ou módulo:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Como alternativa, para gerar o código Kotlin adequado para módulos somente Kotlin, adicione:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Você precisa ter android.useAndroidX=true no
arquivo gradle.properties, como mostrado em
Migrar para o AndroidX.
Para ver mais informações sobre o uso de extensões Kotlin, consulte a documentação do Android KTX.
Para ver mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 2.9
Versão 2.9.5
24 de setembro de 2025
Lançamento de androidx.navigation:navigation-*:2.9.5. A versão 2.9.5 contém estes commits.
Correções de bugs
- O Navigation Safe Args agora pode processar a compatibilidade do AGP 9.0 com o Kotlin integrado. (I1d9d76).
Atualização de dependências
- O plug-in Navigation Safe Args agora depende do Plug-in do Android para Gradle versão 8.4.2. (b/431847270, I5932a)
Versão 2.9.4
10 de setembro de 2025
Lançamento de androidx.navigation:navigation-*:2.9.4. A versão 2.9.4 contém estes commits.
Correções de bugs
- Evita falhas quando um evento de retorno preditivo é entregue no meio do frame depois que o manipulador foi desativado em uma transição
NavHost. (I5667c, b/384186542).
Versão 2.9.3
30 de julho de 2025
Lançamento de androidx.navigation:navigation-*:2.9.3. A versão 2.9.3 contém estes commits.
Correções de bugs
- Foi corrigido um erro em
NavControllerque causava umConcurrentModificationExceptionao usarOnDestinationChangedListeners. (If7406, b/417784831) - Foi corrigido um erro ao usar
navigate(uri, navOptions,navigationExtras)em que os extras eram ignorados. (I67fb7, b/430336813)
Versão 2.9.2
16 de julho de 2025
Lançamento de androidx.navigation:navigation-*:2.9.2. A versão 2.9.2 contém estes commits.
Correções de bugs
- Correção de um problema em que a entrada não era retomada quando a caixa de diálogo acima dela era dispensada (Idb20e, b/418746335).
- Foi corrigido o erro
MissingFieldExceptionao testarSavedStateHandlecom rotas de tipo seguro usandoNavTypespersonalizado. (I2f843, b/421002511)
Versão 2.9.1
2 de julho de 2025
Lançamento de androidx.navigation:navigation-*:2.9.1. A versão 2.9.1 contém estes commits.
Correções de bugs
- Correção de um problema que fazia com que
NavEntriesinstanciados usando single top nunca fossem além de CREATED noLifecycle.State. (I043ba, b/421095236)
Versão 2.9.0
7 de maio de 2025
Lançamento de androidx.navigation:navigation-*:2.9.0. A versão 2.9.0 contém estes commits.
Mudanças importantes desde a versão 2.8.0
- As ações do Safe Args de navegação agora são geradas com a anotação
@CheckResultpara garantir que sejam usadas.
Interface SupportingPane
- Os navegadores personalizados agora podem marcar seus destinos como implementando a interface
SupportingPane, o que indica aoNavControllerque esses destinos serão mostrados ao lado de outros destinos. Usando essa interface, é possívelRESUMEDvários destinos ao mesmo tempo, por exemplo.
Compose Kotlin Multiplatform
- A navegação agora oferece uma nova função
NavController.handleDeepLink()comum que usa umNavDeepLinkRequestem vez de umIntent. Isso permite que plataformas diferentes do Android processem links diretos corretamente. Agradecimentos a Konstantin Tskhovrebov - A navegação agora oferece
NavUri, uma nova função de analisador comum que é uma API compatível com o URI do Android em outras plataformas. Isso permite criar um URI de maneira independente da plataforma. Agradecimentos a Konstantin Tskhovrebov
Funções com segurança de tipos
- As APIs com segurança de tipo que antes só podiam ser acessadas por métodos
reified, ou seja,composable<YourScreen>agora têm versões não concretizadas que usam diretamente uma instânciaKClass. - A segurança de tipos de navegação agora oferece suporte a classes de valor como uma rota ou como o tipo de argumento de uma rota.
Versão 2.9.0-rc01
23 de abril de 2025
Lançamento de androidx.navigation:navigation-*:2.9.0-rc01. A versão 2.9.0-rc01 contém estes commits.
Correções de bugs
- Removemos todas as segmentações de plataforma que não são Android da navegação do Jetpack, porque elas não funcionam. Agora, stubs para diferentes plataformas são fornecidos.(I2877d)
Versão 2.9.0-beta01
9 de abril de 2025
Lançamento de androidx.navigation:navigation-*:2.9.0-beta01. A versão 2.9.0-beta01 contém estes commits.
Mudanças na API
- A API comum de
parseStringAsNavUrifoi alterada para uma função de fábricaNavUrique usa uma string. (I4db6e, b/403616316)
Atualizações de dependência
- Essa biblioteca agora é destinada ao nível de linguagem Kotlin 2.0 e exige o KGP 2.0.0 ou mais recente. (Idb6b5).
Versão 2.9.0-alpha09
26 de março de 2025
Lançamento de androidx.navigation:navigation-*:2.9.0-alpha09. A versão 2.9.0-alpha09 contém estes commits.
Novos recursos
- O módulo
navigation-testingagora é compatível com computadores, Linux, macOS e iOS, além do Android. (I2b770, b/398265336). - O
NavTypeagora está disponível para computadores, Linux, macOS e iOS, além do Android. (I297d8).
Versão 2.9.0-alpha08
12 de março de 2025
Lançamento de androidx.navigation:navigation-*:2.9.0-alpha08. A versão 2.9.0-alpha08 contém estes commits.
Correções de bugs
- No Navigation
2.8.9: correção de uma regressão encontrada no Navigation 2.8.8 que exigia que um link direto correspondesse exatamente a todos os campos de uma solicitação ou intent de link direto para ser considerado uma correspondência. Isso fez com que os links diretos que continham correspondências parciais de campo e não tinham outras deixassem de funcionar. (Ie5e36, b/399826566).
Contribuição externa
- Nova função de analisador comum para criar um
NavUri. Agradecimentos a Konstantin Tskhovrebov (If0a6a).
Versão 2.9.0-alpha07
26 de fevereiro de 2025
Lançamento de androidx.navigation:navigation-*:2.9.0-alpha07. A versão 2.9.0-alpha07 contém estes commits.
Correções de bugs
- Correção de um problema em que a tentativa de
saveStatecom um pop não inclusivo resultava em um savedState nulo que podia causar uma falha na restauração. (I9f3e8, b/395091644) - No Navigation 2.8.8: a correspondência de
NavDeepLinkfoi corrigida quando um link direto e uma solicitação de link direto precisam corresponder exatamente em URI, ação e MIME. A correspondência não é mais permitida se apenas um ou dois campos forem iguais. (I3b029, b/395712033) - No Navigation 2.8.8: correção de um bug em que rotas com caminhos curinga não correspondiam a um link direto adicionado (I7ea92, b/389970341).
Contribuição externa
- Extraia APIs navigation-common, navigation-runtime e navigation-compose para a plataforma comum. Agradecimentos a Konstantin Tskhovrebov (I1e626, Ica76f, Idf479).
Problemas conhecidos
- Devido ao trabalho para resolver b/395712033, os links diretos são obrigados incorretamente a ter todos os mesmos campos que a solicitação de link direto e/ou o
Intent. Os links diretos só precisam corresponder aos campos que têm, e os campos não incluídos devem ser ignorados. Isso foi corrigido em uma versão posterior como parte de b/399826566.
Versão 2.9.0-alpha06
12 de fevereiro de 2025
Lançamento de androidx.navigation:navigation-*:2.9.0-alpha06. A versão 2.9.0-alpha06 contém estes commits.
Novos recursos
- As ações do Safe Args de navegação agora são geradas com a anotação
@CheckResultpara garantir que sejam usadas. (I14d4c, b/356323084)
Correções de bugs
- Correção de um erro em
NavControllerem que os estados backStack eram restaurados incorretamente em uma matriz quando eram salvos em uma lista. (Idfb9b). - No Navigation
2.8.7: o Navigation Safe Args agora oferece suporte a destinos combináveis. (I35320, b/362791955).
Versão 2.9.0-alpha05
29 de janeiro de 2025
Lançamento de androidx.navigation:navigation-*:2.9.0-alpha05. A versão 2.9.0-alpha05 contém estes commits.
Correções de bugs
- Correção de um problema que causava uma animação de escalonamento inesperada ao usar o Navigation Compose. (I480f4, b/353294030).
- Em Navegação
2.8.6: os rótulosNavDestinationfornecidos por XML serão analisados usandoNavType.getpara garantir que a lógica personalizadaNavTypeseja respeitada. (I7ec2f, b/388100796). - No Navigation
2.8.6: ao navegar para uma atividade comdataPattern,ActivityNavigatoragora tenta codificar o valor do argumento com oNavTypedo argumento. (I16376, b/383616432) - No Navigation
2.8.5: correção de um problema que causava uma animação de escalonamento inesperada ao usar o Navigation Compose e chamar a navegação no mesmo frame em que a animação atual estava terminando. (I26cb1, b/353294030)
Versão 2.9.0-alpha04
11 de dezembro de 2024
Lançamento de androidx.navigation:navigation-*:2.9.0-alpha04. A versão 2.9.0-alpha04 contém estes commits.
Novos recursos
- As APIs com segurança de tipo que antes só podiam ser acessadas por métodos
reified, ou seja,composable<YourScreen>agora tem versões não reificadas que usam diretamente uma instânciaKClass(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808).
A tabela abaixo fornece as APIs reificadas e KClass.
| reificado | 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) |
Mudanças na API
- A sobrecarga
NavGraph.setStartDestinationespecífica do Kotlin para segurança de tipo fica oculta das fontes Java. (Ic640c, b/364634035)
Correções de bugs
- No Navigation
2.8.5: correção de um problema em queNavHostpodia gerar uma exceção dentro doPredictiveBackHandlerse a backstack fosse reduzida a uma entrada e uma ação de voltar do sistema fosse acionada no mesmo frame. (I1a429, b/375343407) - No Navigation
2.8.5: correção deNavDestinationNullPointerExceptionao atualizar ostartDestinationde um gráfico. (I99421, b/361560785)
Contribuição externa
- No Navigation
2.8.5: a segurança de tipo de navegação agora oferece suporte aList<Enum>como um tipo de argumento de uma rota sem exigirNavTypepersonalizado. Agradecemos Csaba Kozák! (GH-725, b/375559962)
Versão 2.9.0-alpha03
13 de novembro de 2024
Lançamento de androidx.navigation:navigation-*:2.9.0-alpha03. A versão 2.9.0-alpha03 contém estes commits.
Novos recursos
- A segurança de tipos de navegação agora oferece suporte a classes de valor como uma rota ou como o tipo de argumento de uma rota. (I9344a, b/374347483).
Correções de bugs
- Correção de um
ConcurrentModificationExceptionque podia ocorrer quando umLifecycleObserveranexado a umNavBackStackEntryaciona uma mudança na pilha de retorno quando oLifecycleOwnerhost, como a atividade ou o fragmento contido, muda o estado do ciclo de vida. (Ia9494).
Versão 2.9.0-alpha02
30 de outubro de 2024
Lançamento de androidx.navigation:navigation-*:2.9.0-alpha02. A versão 2.9.0-alpha02 contém estes commits.
Contribuição externa
- Novo método comum
NavController.handleDeepLink(request: NavDeepLinkRequest). Agradecimentos a Konstantin Tskhovrebov (I3e228).
Versão 2.9.0-alpha01
16 de outubro de 2024
Lançamento de androidx.navigation:navigation-*:2.9.0-alpha01. A versão 2.9.0-alpha01 contém estes commits.
Novos recursos
- Os navegadores personalizados agora podem marcar seus destinos como implementando a interface
SupportingPane, o que indica aoNavControllerque esses destinos serão mostrados ao lado de outros destinos. Usando essa interface, é possívelRESUMEDvários destinos ao mesmo tempo, por exemplo. (Id5559) - No Navigation
2.8.3: adicionamos novas verificações de lint para os módulosnavigation-common,navigation-runtimeenavigation-composepara ajudar a identificar rotas type-safe que não estão anotadas corretamente com@Serializable. Essa verificação é aplicada a todas as funções de extensãoNavGraphBuildereNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - No Navigation
2.8.3: adicionamos novas verificações de lint para os módulosnavigation-common,navigation-runtimeenavigation-composepara ajudar a identificar rotas type-safe com argumentos Enum que não estão anotados corretamente com@Keep. Essa verificação é aplicada a todas as funções de extensãoNavGraphBuildereNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Mudanças de comportamento
- A tentativa de usar um
NavControllerque já foiDESTROYEDagora vai causar umIllegalStateException. (I520da, b/369616172)
Correções de bugs
- Atualize a exceção "Classe de enumeração não encontrada" para sugerir o uso da anotação
@Keepcaso a classe de enumeração seja apagada em builds minimizados. (I90e79, b/358137294)
Problemas conhecidos
- Há um problema com as novas regras de lint adicionadas em
Navigation 2.8.*que causa um erroObsolete custom lint checkao tentar executar o lint com o plug-in do Android para Gradle 8.4 ou mais recente. (b/368070326, b/371463741)
Versão 2.8
Versão 2.8.9
12 de março de 2025
Lançamento de androidx.navigation:navigation-*:2.8.9. A versão 2.8.9 contém estes commits.
Correções de bugs
- Foi corrigida uma regressão encontrada na Navegação 2.8.8 que exigia que um link direto correspondesse exatamente a todos os campos de uma solicitação ou intent de link direto para ser considerado uma correspondência. Isso fez com que os links diretos que continham correspondências parciais de campo e não tinham outras deixassem de funcionar. (Ie5e36, b/399826566).
Versão 2.8.8
26 de fevereiro de 2025
Lançamento de androidx.navigation:navigation-*:2.8.8. A versão 2.8.8 contém estes commits.
Correções de bugs
- Correção de um bug em que rotas com caminhos de caractere curinga não correspondiam a um link direto adicionado. (I7ea92, b/389970341).
- A correspondência de
NavDeepLinkfoi corrigida para que um link direto e uma solicitação de link direto correspondam exatamente em URI, ação e MIME. A correspondência não é mais permitida se apenas um ou dois campos forem iguais. (I3227f, b/395712033).
Problemas conhecidos
- Devido ao trabalho para resolver b/395712033, os links diretos são obrigados incorretamente a ter todos os mesmos campos que a solicitação de link direto e/ou o
Intent. Os links diretos só precisam corresponder aos campos que têm, e os campos não incluídos devem ser ignorados. Isso foi corrigido em uma versão posterior como parte de b/399826566.
Versão 2.8.7
12 de fevereiro de 2025
Lançamento de androidx.navigation:navigation-*:2.8.7. A versão 2.8.7 contém estes commits.
Correções de bugs
- O Safe Args de navegação agora oferece suporte a destinos combináveis. (I35320, b/362791955).
Versão 2.8.6
29 de janeiro de 2025
Lançamento de androidx.navigation:navigation-*:2.8.6. A versão 2.8.6 contém estes commits.
Correções de bugs
- Os rótulos
NavDestinationfornecidos por XML serão analisados usandoNavType.getpara garantir que a lógicaNavTypepersonalizada seja respeitada. (Id366d, b/388100796) - Ao navegar para uma atividade com
dataPattern, oActivityNavigatoragora vai tentar codificar o valor do argumento com oNavTypedele. (I1a71d, b/383616432).
Versão 2.8.5
11 de dezembro de 2024
Lançamento de androidx.navigation:navigation-*:2.8.5. A versão 2.8.5 contém estes commits.
Correções de bugs
- Correção de um problema em que
NavHostpodia gerar uma exceção dentro doPredictiveBackHandlerse a backstack fosse reduzida a uma entrada e uma ação de voltar do sistema fosse acionada no mesmo frame. (I1a429, b/375343407) - Correção de
NavDestinationNullPointerExceptionao atualizar umstartDestinationde gráfico. (I99421, b/361560785) - Correção de um problema que causava uma animação de escalonamento inesperada ao usar o Navigation Compose e chamar "navigate" no mesmo frame em que a animação atual estava terminando. (I26cb1, b/353294030)
- Correção de um
ConcurrentModificationExceptionque podia ocorrer quando umLifecycleObserveranexado a umNavBackStackEntryaciona uma mudança na pilha de retorno quando oLifecycleOwnerhost, como a atividade ou o fragmento contido, muda o estado do ciclo de vida. (Ia9494).
Contribuição externa
- A segurança de tipo de navegação agora oferece suporte a
List<Enum>como um tipo de argumento de uma rota sem exigir nenhumNavTypepersonalizado. Agradecemos Csaba Kozák! (GH-725, b/375559962)
Versão 2.8.4
13 de novembro de 2024
Lançamento de androidx.navigation:navigation-*:2.8.4. A versão 2.8.4 contém estes commits.
Novos recursos
- De Navigation
2.9.0-alpha03: a segurança de tipo do Navigation agora oferece suporte a classes de valor como rota ou como o tipo de argumento de uma rota (I9344a, b/374347483).
Correções de bugs
- No Navigation
2.9.0-alpha01: tentar usar umNavControllerque foiDESTROYEDanteriormente agora vai causar umIllegalStateException. (I520da, b/369616172)
Versão 2.8.3
16 de outubro de 2024
Lançamento de androidx.navigation:navigation-*:2.8.3. A versão 2.8.3 contém estes commits.
Novos recursos
- Adicionamos novas verificações de lint para os módulos
navigation-common,navigation-runtimeenavigation-composepara ajudar a identificar rotas type-safe que não estão anotadas corretamente com@Serializable. Essa verificação é aplicada a todas as funções de extensãoNavGraphBuildereNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Adicionamos novas verificações de lint para os módulos
navigation-common,navigation-runtimeenavigation-composepara ajudar a identificar rotas type-safe com argumentos Enum que não estão anotados corretamente com@Keep. Essa verificação é aplicada a todas as funções de extensãoNavGraphBuildereNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Correções de bugs
- Correção de um problema em que as novas regras de lint adicionadas no
Navigation 2.8.*causavam um erroObsolete custom lint checkao tentar executar o lint com o plug-in do Android para Gradle 8.4 ou mais recente. (I1be3d, b/368070326, b/371463741)
Problemas conhecidos
- O lint de navegação vai gerar um erro de verificação de lint personalizada obsoleta ao tentar executar o lint com o Lint 16 (AGP 8.7) ou mais recente. (b/371926651).
Versão 2.8.2
2 de outubro de 2024
Lançamento de androidx.navigation:navigation-*:2.8.2. A versão 2.8.2 contém estes commits.
Novos recursos
- A segurança de tipos de navegação agora oferece suporte a classes serializáveis que incluem
Double,Double?,DoubleArray,DoubleArray?,List<Double>eList<Double>?sem exigirNavTypepersonalizados. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Correções de bugs
- Melhoramos a mensagem de erro para quando a navegação não consegue mapear o argumento de uma rota para um
NavType. A nova mensagem de erro vai conter o nome do argumento, o nome totalmente qualificado do argumento e o nome totalmente qualificado da rota. (Id8416, b/346264232).
Versão 2.8.1
18 de setembro de 2024
Lançamento de androidx.navigation:navigation-*:2.8.1. A versão 2.8.1 contém estes commits.
Novos recursos
- Adicionada uma nova regra de lint para garantir o uso da função
popBackStack, que usa um tipo de classe concretizado ao tentarpopBackStackusando APIs com segurança de tipo. (Ief161, b/358095343)
Correções de bugs
- Agora, a navegação exige que a rota transmitida para um
NavGraph'sstartDestinationcontenha os valores de todos os argumentos obrigatórios, incluindo argumentos que não são anuláveis e não têm um valor padrão. (I18e74, b/362594265). - Os argumentos seguros de navegação agora são compatíveis com strings não anuláveis. Assim, os valores "null" serão analisados e armazenados no pacote como estão. Isso difere do comportamento atual, em que os valores "null" são analisados em um objeto nulo. Essa mudança se aplica apenas a tipos de string não anuláveis. As strings anuláveis permanecem inalteradas. (I08b4a, b/348936238)
- Não é mais possível usar um link direto para acessar um
NavDestination, exceto por um link direto que foi adicionado explicitamente ao destino. Isso também significa que você só pode navegar até a rota de um destino com a sobrecarga da função de navegação que usa uma rota de string. Isso corrige uma vulnerabilidade que permitia o link direto para um destino potencialmente protegido. (Ie30e6).
Atualização de dependências
- O Navigation Safe Args agora depende do Kotlin 1.9.24, em vez do Kotlin 2.X, garantindo que os desenvolvedores não sejam obrigados a atualizar. (a4129a)
- O Navigation Compose agora depende do Compose
1.7.2.
Versão 2.8.0
4 de setembro de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0. A versão 2.8.0 contém estes commits.
Mudanças importantes desde a versão 2.7.0
Segurança de tipos da DSL do Kotlin para navegação
- Agora, a navegação oferece segurança de tipo para a DSL do Kotlin (usada pelo Navigation Compose) usando a serialização do Kotlin para permitir que você defina destinos no gráfico de navegação usando objetos e classes de dados com segurança de tipo:
// 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)
}
}
Consulte a postagem do blog sobre o encontro do Navigation Compose com a segurança de tipos para mais informações.
Volta preditiva do Navigation Compose
- O Navigation Compose agora oferece suporte ao retorno preditivo no app com as novas APIs
SeekableTransitionStatedo compose-animation. Isso permite que você use o gesto de retorno para ver o destino anterior com sua transição personalizada antes de decidir confirmar a transação com o gesto concluído ou cancelar.
Elemento combinável de fragmento de navegação
- Adicionado um novo artefato
navigation-fragment-composeque inclui uma alternativaComposableNavHostFragmentparaNavHostFragment, permitindo adicionar destinos combináveis aos arquivos XML de navegação. Cada destinocomposableprecisa ser expresso como um método@Composablede nível superior e sem argumentos, cujo nome totalmente qualificado é usado como o atributoandroid:nameem cada destino. Ao navegar para um desses destinos, um fragmento de contêiner é criado para mostrar o conteúdo combinável.
// 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" />
Outras mudanças
- O Navigation Compose agora depende do Compose 1.7.0.
- A navegação agora oferece uma nova classe
CollectionNavType<T>, uma subclasse deNavType<T>para argumentos baseados em coleções, como listas, matrizes e mapas. Todas as matrizesNavTypepadrão (IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeeStringArrayType) agora herdam dessa nova classe. - O
NavTypeagora tem suporte integrado para listas de Int, String, Boolean, Float e Long.
Versão 2.8.0-rc01
21 de agosto de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-rc01. A versão 2.8.0-rc01 contém estes commits.
Correções de bugs
- Correção de falha na navegação ao transmitir classes de enumeração de nível superior como argumentos com segurança de tipo. (I0ba76, b/358137294).
- A navegação 2.8 agora funciona corretamente com o SDK 34 e não será trocada pelo SDK 35 até o lançamento da versão 2.9 com o restante das bibliotecas do AndroidX. (b/358798728)
Versão 2.8.0-beta07
7 de agosto de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-beta07. A versão 2.8.0-beta07 contém estes commits.
Problemas conhecidos
- Devido a b/358137294, apenas enums aninhados em outra classe são compatíveis de imediato. Enums de nível superior serão compatíveis na próxima versão.
Correções de bugs
- Ao navegar até destinos duplicados ou compartilhados, a navegação prioriza o destino mais próximo do local atual no gráfico. (Ic89a4, b/352006850)
- A navegação em Safe Args agora tem um novo
NavType.EnumType. Isso significa que os tipos deEnumnão exigem maisNavTypes personalizados. OSerialNamedoEnumprecisa ser o nome padrão totalmente qualificado. (I66d22, b/346475493). - A navegação em argumentos seguros adicionou suporte integrado para tipos de argumentos anuláveis,incluindo
Int?,Long?,Float?,Boolean?eEnum<*>?. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - O
startDestinationdoNavGraphagora vai usar os valores de argumento padrão se a rotastartDestinationtransmitida aoNavGraphfor exatamente igual aostartDestination.route. (I13762, b/354046047)
Versão 2.8.0-beta06
24 de julho de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-beta06. A versão 2.8.0-beta06 contém estes commits.
Correções de bugs
- Foi corrigido um problema em que as verificações de lint
WrongStartDestinationTypenão verificavam objetos complementares no tipo de classe transmitido, fazendo com que o lint não detectasse o erro. (I92b09).
Versão 2.8.0-beta05
10 de julho de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-beta05. A versão 2.8.0-beta05 contém estes commits.
Correções de bugs
- Correção de uma falha na navegação
singleTopquandoNavGraphsaninhados compartilham a mesma rotastartDestination. (I17b94, b/294408596)
Versão 2.8.0-beta04
26 de junho de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-beta04. A versão 2.8.0-beta04 contém estes commits.
Correções de bugs
- A navegação agora oferece suporte à navegação com strings vazias em argumentos de caminho. (Ic5dbd, b/339481310)
- Melhoria da mensagem de erro para serializadores personalizados declarados diretamente em campos de classe via
@Serializable(with =...)para esclarecer que esse recurso não é compatível no momento. (I052b0, b/341319151). - A API de teste
SavedStateHandleFactoryagora pode ser usada em testes não Android, mas vai exigir que o Robolectric ofereça suporte à análise de argumentos com pacotes. (I76cdc, b/340966212) - Correção de falha ao restaurar o estado ao retomar o app após o término do processo usando a navegação com segurança de tipo no Compose. (Ia8f38, b/341801005).
- Correção de um problema no Navigation Compose em que, depois de cancelar o gesto de volta preditivo, a
NavBackStackEntrypara que o usuário volta nunca retorna ao estado de ciclo de vidaRESUMED. Isso também garante que o destino de retorno seja animado corretamente em vez de se encaixar no lugar após um movimento rápido. (I97a0c, b/346608857). - Ao usar a volta preditiva com o Navigation Compose, o destino removido agora terá a ordem Z adequada, animando corretamente na parte de cima do destino de entrada. (I2077b, b/345993681)
Versão 2.8.0-beta03
12 de junho de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-beta03. A versão 2.8.0-beta03 contém estes commits.
Mudanças na API
CollectionNavTypetem um novo método abstratoemptyCollection(). Substitua isso para processar uma coleção vazia transmitida como argumento. (Ie4d84, b/341723133)
Correções de bugs
- Adicionamos documentação sobre
NavType.serializeAsValueeserializeAsValuespara destacar que as saídas finais precisam ser codificadas em URI. (Ida6bd, b/344943214). - Correção de uma falha ao chamar
toRoute<T>com um argumentoCollectionNavTypenulo. Ao navegar com umCollectionNavTypenulo, o argumento de saída será o valor padrão declarado na sua classe Serializable ou o valor de retorno deemptyCollection()se não houver um valor padrão. (I84158, Id630f, b/342672856)
Versão 2.8.0-beta02
29 de maio de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-beta02. A versão 2.8.0-beta02 contém estes commits.
Correções de bugs
- Correção da falha de
ClassCastExceptionao usarNavBackStackEntry.toRoutecom umNavTypepersonalizado anulável. (I1c29b, b/342239473) - Correção de problemas de restauração do estado da pilha de retorno da navegação causados ao tentar restaurar uma entrada da pilha de retorno que não pode ser acessada por ID do destino atual. Como as rotas são apoiadas por IDs, os destinos criados com rotas também foram afetados. Isso também corrige uma falha causada pela chamada de
clearBackStack(), que tinha o mesmo problema. (I423c3, b/339908057)
Versão 2.8.0-beta01
14 de maio de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-beta01. A versão 2.8.0-beta01 contém estes commits.
Mudanças na API
SavedStateHandle.toRoute()agora usa um parâmetrotypeMappara tipos de argumentos personalizados. (Ie39fb, b/339026523).- Adição de uma API de teste ao
navigation-testingpara criar umSavedStateHandlede um objeto serializável do Kotlin. (Id4867, b/339080702).
Correções de bugs
- Foram adicionados documentos de parâmetros ausentes para funções da DSL Kotlin de navegação. (I26a36).
Versão 2.8.0-alpha08
1º de maio de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-alpha08. A versão 2.8.0-alpha08 contém estes commits.
Safe Args no Navigation Compose
- O trabalho para oferecer suporte à segurança de tipos no tempo de compilação para o Navigation Compose e usuários da DSL de navegação do Kotlin com base na serialização do Kotlin foi concluído, e as APIs que eram experimentais agora estão estáveis. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139).
Essa funcionalidade usa a serialização do Kotlin (link em inglês) para permitir que você defina destinos no gráfico de navegação usando objetos com segurança de tipo e classes de dados:
// 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)
}
}
Consulte a postagem do blog sobre o encontro do Navigation Compose com a segurança de tipos para mais informações.
Novos recursos
- O artefato
navigation-fragment-composeagora fornece um local de composiçãoLocalFragmentpara métodos combináveis em umComposableFragment. (If35e5) - O
NavTypeagora tem suporte integrado para listas de Int, String, Boolean, Float e Long. (I4b6dd, Ia914c, b/188693139)
Versão 2.8.0-alpha07
17 de abril de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-alpha07. A versão 2.8.0-alpha07 contém estes commits.
Novos recursos
Adiciona um novo artefato
navigation-fragment-composeque inclui uma alternativaComposableNavHostFragmentparaNavHostFragment, permitindo adicionar destinoscomposableaos arquivos XML de navegação. Cada destinocomposableprecisa ser expresso como um método@Composablede nível superior e sem argumentos, cujo nome totalmente qualificado é usado como o atributoandroid:nameem cada destino. Ao navegar para um desses destinos, um fragmento de contêiner é criado para mostrar o conteúdo combinável. (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" />
Mudanças na API
- O suporte ao Safe Args no Navigation Compose usando uma abordagem baseada na serialização do Kotlin continuou. Essas APIs não estão concluídas e são marcadas com a anotação
ExperimentalSafeArgsApi. Essa anotação será removida quando toda a superfície da API for concluída em uma versão futura. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
Versão 2.8.0-alpha06
3 de abril de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-alpha06. A versão 2.8.0-alpha06 contém estes commits.
Mudanças na API
- Começou o suporte para Safe Args no Navigation Compose usando uma abordagem baseada na serialização do Kotlin. Essas APIs não estão concluídas e são marcadas com a anotação
ExperimentalSafeArgsApi. Essa anotação será removida quando toda a superfície da API for concluída em uma versão futura. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139).
Correções de bugs
NavHostagora usaAlignment.TopStartcomo o argumento padrão contentAlignment. Isso o alinha com o padrão paraAnimatedContente corrige algumas instâncias de uma transição de escala inesperada do centro. (I09e72, b/330111602)- Ao deslizar o gesto de retorno preditivo enquanto usa o Navigation Compose, o
NavHostagora conclui corretamente a transição personalizada em vez de terminar imediatamente. (I99017, b/327292110).
Versão 2.8.0-alpha05
20 de março de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-alpha05. A versão 2.8.0-alpha05 contém estes commits.
Novos recursos
- Agora é possível transmitir argumentos para o
startDestinationdoNavGraphdiretamente na rotastartDestinationsem depender dodefaultValue. Isso também se aplica aNavGraphstartDestinationsaninhados. (I0e0b5, b/109505019, b/188693139).
Mudanças na API
- Adição de uma nova classe abstrata
CollectionNavType<T>, uma subclasse deNavType<T>para argumentos baseados em coleções, como listas, matrizes e mapas. (Ic6d63, b/188693139). - Todas as matrizes
NavTypepadrão (IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeeStringArrayType) agora são do tipoCollectionNavType(Idcf79, b/188693139). - O
NavTypeagora oferece uma nova APIvalueEqualsaberta que determina se dois valores do mesmo tipo são iguais. (I6cb97, b/327229511).
Correções de bugs
- Os parâmetros de consulta em links diretos agora permitem valores na forma de chaves ao redor do nome do argumento (ou seja,
{argName}) como valores válidos paraNavTypescom base em string. Isso corrige um problema em que esse valor seria considerado inválido (ou ausência de valor) para todos os tipos. (I18302, b/327274038) - As funções
NavControllerque oferecem suporte a rotas, comonavigateoupopBackStack, agora podem corresponder corretamente a rotas preenchidas com argumentos da matrizNavTypes. (Iea805, b/327229511)
Versão 2.8.0-alpha04
6 de março de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-alpha04. A versão 2.8.0-alpha04 contém estes commits.
Novos recursos
- Agora é possível especificar o
SizeTranformpara suas transições no Navigation Compose definindo-as como parte da inicialização das funçõescomposablee/ounavigation. (I91062, b/296912651).
Correções de bugs
- Correção de um problema em que o
NavHostna navegação do Compose não mostrava corretamente a transição ao usar o retorno do sistema sem um gesto. (Iceeae, b/325998468).
Versão 2.8.0-alpha03
21 de fevereiro de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-alpha03. A versão 2.8.0-alpha03 contém estas confirmações.
Mudanças na API
NavBackStackEntry.savedStateHandleagora está marcado como@MainThreadporque usa código que precisa estar na linha de execução principal de qualquer maneira. (Ibb988, b/299523245).
Correções de bugs
- Correção de um problema na navegação que fazia com que os ViewModels
NavGraphfossemDESTROYEDmuito cedo porque oViewModelda entrada associada não fazia parte do estado salvo. (Ib6bb7, b/317581849).
Atualização de dependências
- O Navigation Compose agora depende do Compose 1.7.0-alpha03.
Versão 2.8.0-alpha02
7 de fevereiro de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-alpha02. A versão 2.8.0-alpha02 contém estas confirmações.
Novos recursos
- O Navigation Compose agora oferece suporte ao retorno preditivo no app com as novas APIs
SeekableTransitionStatedo compose-animation. Isso permite que você use o gesto de retorno para ver o destino anterior com sua transição personalizada antes de decidir confirmar a transação com o gesto concluído ou cancelar. (I8b8e9).
Versão 2.8.0-alpha01
24 de janeiro de 2024
Lançamento de androidx.navigation:navigation-*:2.8.0-alpha01. A versão 2.8.0-alpha01 contém estas confirmações.
Correções de bugs
- Correção de um vazamento de
BackStackStateem que várias chamadas desaveStateem um destino resultavam em vários estados a serem salvos, mas apenas o primeiro podia ser restaurado. (I598b0, b/309559751) - Correção de um problema em que argumentos que não eram strings não eram exibidos corretamente ao usar os helpers
NavigationUIpara preencher o título das barras de apps. (#636, b/316676794)
Atualização de dependências
- O Navigation Compose agora depende do Compose
1.7.0-alpha01, corrigindo um problema que poderia causar uma animação de escala inesperada. (b/297258205).
Contribuição externa
- Agradecemos a SimonMarquis por corrigir o problema de exibição de argumentos não string ao usar os helpers
NavigationUIpara preencher o título das barras de apps.
Versão 2.7.7
Versão 2.7.7
7 de fevereiro de 2024
Lançamento de androidx.navigation:navigation-*:2.7.7. A versão 2.7.7 contém estas confirmações.
Correções de bugs
- Portado de volta da Navegação
2.8.0-alpha01: correção do vazamento deBackStackStateem que várias chamadas desaveState()em um únicoNavBackStackEntryresultavam no salvamento de vários estados, mas apenas o primeiro estado salvo podia ser restaurado. (I598b0, b/309559751) - Backport da Navegação
2.8.0-alpha01: correção de um problema em que argumentos que não eram strings não eram exibidos corretamente ao usar os helpersNavigationUIpara preencher o título das barras de apps. (#636, b/316676794)
Contribuição externa
- Agradecemos a SimonMarquis por corrigir o problema de exibição de argumentos não string ao usar os helpers
NavigationUIpara preencher o título das barras de apps.
Versão 2.7.6
Versão 2.7.6
13 de dezembro de 2023
Lançamento de androidx.navigation:navigation-*:2.7.6. A versão 2.7.6 contém estas confirmações.
Correções de bugs
- A função
NavGraphequals()agora considera corretamente os nós do outro gráfico em vez de apenas o de chamada. Isso garante que os gráficos com nós de IDs diferentes não sejam mais considerados iguais (I401cb, b/311414915).
Versão 2.7.5
Versão 2.7.5
1º de novembro de 2023
Lançamento de androidx.navigation:navigation-*:2.7.5. A versão 2.7.5 contém estas confirmações.
Melhorias de performance
- Melhoramos muito a performance (em termos de tempo e número de alocações) da comparação de dois gráficos. Isso significa que chamadas como
setGraph, que comparam internamente o novo gráfico com o existente, são muito mais rápidas e resultam em menos frames ignorados. Agradecemos a Michał Z pela análise detalhada que levou a essa melhoria. (I6ad62). - Agora, o
NavHostvai renderizar o destino inicial na primeira transmissão de composição, em vez de precisar esperar a segunda transmissão para ler o estado atualizado. (I439a7, b/304852206).
Correções de bugs
- Foi corrigido um problema em que a backstack era removida se você chamasse
setGraphmais de uma vez com o mesmo gráfico, apenas se houvesse um destino no gráfico que continha uma ação vinculando dois destinos. (Ieaed7) - As caixas de diálogo que foram navegadas e dispensadas em rápida sucessão não vão mais vazar para a lista de
NavController.visibleEntries. (I67586, b/287969970) - Quando uma entrada é removida seguida de uma mudança de configuração, o
ViewModelda entrada agora é limpo corretamente sesaveStatefor "false". (Idf242, b/298164648) - Foi corrigido um problema em que o
NavControllerpodia processar o mesmo link direto mais de uma vez se a pilha de retorno estivesse completamente vazia antes de uma mudança de configuração ou uma chamada parasetGraphsomente quando a intent recebida tinha a flagFLAG_ACTIVITY_NEW_TASKdefinida. (I73c7f).
Atualizações de dependência
- A navegação com Fragments agora depende do Fragment 1.6.2, corrigindo um problema em que as instâncias
ViewModelde fragmentos aninhados não eram limpas ao chamarclearBackStack.
Versão 2.7.4
Versão 2.7.4
4 de outubro de 2023
Lançamento de androidx.navigation:navigation-*:2.7.4. A versão 2.7.4 contém estas confirmações.
Novos recursos
- Adicionamos suporte para
popUpTousar rotas com argumentos para permitir o retorno a uma entrada específica que usa esses argumentos exatos, correspondendo ao suporte encontrado empopBackStack. (I731f4, b/299255572)
Correções de bugs
- Correção de um problema em que a interrupção de uma navegação com outra navegação com
popUpTocausava a falha deFragmentNavigator. (I3c848, b/301887045). - Correção de um problema em que o pressionamento do botão Voltar do sistema fazia com que o
currentDestinationnão fosse atualizado corretamente para corresponder ao fragmento mostrado. (Id0d6c, b/289877514) - O ciclo de vida do
DialogFragmentagora vai passar corretamente para o estadoRESUMEDquando a caixa de diálogo acima dele for dispensada. (I88f0d, b/301811387)
Versão 2.7.3
Versão 2.7.3
20 de setembro de 2023
Lançamento de androidx.navigation:navigation-*:2.7.3. A versão 2.7.3 contém estas confirmações.
Correções de bugs
- Correção de um problema na navegação com fragmentos que fazia com que a lista
visibleEntriescontivesse entradas incorretas. (I5caa9, b/288520638). - Foi corrigido um problema que impedia que o destino da janela flutuante (ou seja,
Dialogs,Bottomsheetsetc.) recebesse um callback de ciclo de vidaRESUMED. (I3b866, b/287505132).
Versão 2.7.2
Versão 2.7.2
6 de setembro de 2023
Lançamento de androidx.navigation:navigation-*:2.7.2. A versão 2.7.2 contém estas confirmações.
Correções de bugs
- A navegação agora depende do Lifecycle
2.6.2, corrigindo uma interação entrerememberSaveablee oNavHostdo Navigation Compose que faria com que o estadorememberSaveabledos destinos e as instânciasSavedStateHandledeViewModelnão fossem restaurados corretamente após a interrupção e recriação do processo. (b/298059596, b/289436035). - Foi corrigido um problema ao mostrar várias caixas de diálogo no Navigation Compose simultaneamente. As caixas de diálogo parcialmente obscurecidas (por exemplo, não a caixa de diálogo mais acima) ficavam no estado de ciclo de vida
CREATEDem vez deSTARTED. (aosp/2728520, b/289257213) - Foi corrigido um problema ao mostrar várias caixas de diálogo no Navigation Compose simultaneamente. Dispensar a caixa de diálogo mais acima fazia com que a nova caixa de diálogo mais acima ficasse presa no estado de ciclo de vida
STARTEDem vez de passar corretamente paraRESUMED. (aosp/2629401, b/286371387) - O Navigation Safe Args não instancia mais a tarefa imediatamente se ela não estiver sendo executada. (I0e385, b/260322841).
Atualização de dependências
- O Navigation Compose agora depende do Compose 1.5.1.
Versão 2.7.1
Versão 2.7.1
23 de agosto de 2023
Lançamento de androidx.navigation:navigation-*:2.7.1. A versão 2.7.1 contém estas confirmações.
Correções de bugs
- Correção de um problema na navegação com Compose em que, ao usar um
Scaffold, era possível receber um erro ao tentar acessar umLifecycle.State.DESTROYEDViewModel. (I1dc11, b/268422136).
Versão 2.7.0
Versão 2.7.0
9 de agosto de 2023
Lançamento de androidx.navigation:navigation-*:2.7.0. A versão 2.7.0 contém estas confirmações.
Mudanças importantes desde a versão 2.6.0
Animações do Accompanist
Agora que o AnimatedContent está estável, conseguimos mover o código da Accompanist Navigation Animation de volta para o próprio Navigation Compose.
Isso significa que todo o suporte para definir transições personalizadas que existia no AnimatedNavHost é compatível diretamente com o NavHost.
Nenhuma outra mudança será feita na animação de navegação do Accompanist, e vamos descontinuá-la formalmente em breve, junto com orientações sobre como migrar de volta para o Navigation Compose. No entanto, será o inverso do guia de migração, sem outras mudanças na API necessárias se você já estiver usando a versão alfa mais recente do Accompanist (0.31.2-alpha). (b/197140101)
Correções de bugs
- O NavHost no Navigation Compose agora intercepta corretamente as chamadas de retorno do sistema, mesmo depois que a atividade foi INTERROMPIDA e RETOMADA. (Icb6de, b/279118447)
Atualizações de dependência
- O Navigation agora depende do Compose
1.5.0, em vez do1.1.0.
Versão 2.7.0-rc01
26 de julho de 2023
Lançamento de androidx.navigation:navigation-*:2.7.0-rc01. A versão 2.7.0-rc01 contém estas confirmações.
Correções de bugs
- Correção de um problema em que as lambdas
EnterTransitioneExitTransitioncriadas como parte doNavHostpodiam permanecer na memória mesmo depois que oNavHostera removido da composição. (I893d0).
Problemas conhecidos
- Há um problema na navegação 2.6.x que, ao navegar com popUpTo, pode causar um
IllegalArgumentException. É possível evitar essa exceção reestruturando seu gráfico, semelhante ao conselho sugerido aqui. (b/287133013).
Versão 2.7.0-beta02
28 de junho de 2023
Lançamento de androidx.navigation:navigation-*:2.7.0-beta02. A versão 2.7.0-beta02 contém estas confirmações.
Correções de bugs
- O Navigation Compose agora tem a ordem Z correta para transições personalizadas que usam a navegação com a opção
popUpTo.(/Ib1c3a, b/285153947)
Versão 2.7.0-beta01
7 de junho de 2023
Lançamento de androidx.navigation:navigation-*:2.7.0-beta01. A versão 2.7.0-beta01 contém estas confirmações.
Correções de bugs
- O
NavHostno Navigation Compose agora intercepta corretamente as chamadas de retorno do sistema, mesmo depois que oActivityfoiSTOPPEDeRESUMED. (Icb6de, b/279118447)
Versão 2.7.0-alpha01
24 de maio de 2023
Lançamento de androidx.navigation:navigation-*:2.7.0-alpha01. A versão 2.7.0-alpha01 contém estas confirmações
Animações do Accompanist
Agora que o AnimatedContent está estável, conseguimos mover o código da Accompanist Navigation Animation de volta para o próprio Navigation Compose.
Isso significa que todo o suporte para definir transições personalizadas que existia no AnimatedNavHost é compatível diretamente com o NavHost.
Nenhuma outra mudança será feita na animação de navegação do Accompanist, e vamos descontinuá-la formalmente em breve, junto com orientações sobre como migrar de volta para o Navigation Compose. No entanto, será o inverso do guia de migração, sem outras mudanças na API necessárias se você já estiver usando a versão alfa mais recente do Accompanist (0.31.2-alpha). (b/197140101)
Correções de bugs
- Do Navigation
2.6.0-rc02: correção de um problema com a navegação em fragmentos em que a navegação compopUpToe a remoção de um fragmento da backstack sem recriar a visualização faziam com que a volta do sistema parasse de funcionar. (Ieb8d4, b/281726455).
Atualizações de dependência
- O Navigation agora depende do Compose
1.5.0-beta01.
Versão 2.6.0
Versão 2.6.0
7 de junho de 2023
Lançamento de androidx.navigation:navigation-*:2.6.0. A versão 2.6.0 contém estas confirmações.
Mudanças importantes na navegação desde a versão 2.5.0
- O
argumentsdoNavBackStackEntrye oargumentstransmitido para umOnDestinationChangedListeneragora são apenas uma cópia dos argumentos imutáveis que foram criados ao navegar para o destino. Isso significa que as mudanças feitas nesses pacotes não vão ser aplicadas nos acessos subsequentes às instânciasargumentsou outrasOnDestinationChangedListener NavDeepLinkagora oferece suporte a valores padrão para matrizes, o que permite suporte para o mapeamento de parâmetros de consulta repetidos para o tipo de matriz do argumento.NavTypeagora também inclui um método padrão que pode ser substituído para combinar dois valores analisados- As subclasses personalizadas de
NavTypeagora podem modificarserializeAsValuepara serializar um valor em uma string, permitindo que a serialização e desserialização (viaparseValue) sejam totalmente encapsuladas na classeNavType.StringTypeagora substitui esse método para chamarUri.encodenoStringespecificado
Mudanças importantes no Navigation Compose desde a versão 2.5.0
- Ao visualizar um elemento combinável com
NavHost, ele mostra ostartDestinationdo NavGraph por padrão NavController.popBackStack(route),NavController.getBackStackEntry(route),NavController.clearBackStack(route)agora oferecem suporte a rotas com argumentos preenchidos de forma parcial ou total. Os argumentos precisam ser uma correspondência exata com os argumentos da entrada- A tentativa de criar um
NavDeepLinkvazio usando a DSLnavDeepLinkdo Kotlin agora vai resultar em um aviso de lint indicando que um link direto precisa de um URI, ação e/ou tipo MIME para ser válido
Mudanças importantes na navegação com fragmentos desde a versão 2.5.0
- O
NavHostFragmentnão intercepta mais o botão "Voltar" do sistema. Isso permite que oFragmentManagersubjacente processe o retorno do sistema. Isso permite que Fragment1.7.0-alpha01e versões mais recentes ofereçam uma animação de volta preditiva no app em dispositivos Android U. - Ao usar a navegação com fragmentos, tentar fazer manualmente uma
FragmentTransactionque adiciona um fragmento à backstack daFragmentManageragora vai gerar umaIllegalArgumentException. Sempre adicione fragmentos usando a APInavigate(). - Ao usar a string exata
${applicationId}como o marcador nos atributosapp:dataeapp:dataPatternno elemento de atividade de um arquivo XML de navegação, o marcador vai ser preenchido automaticamente com apackageNamedo contexto com a inflação - O
FragmentNavigatoragora usa as APIs de transição ao navegar e mostrarNavBackStackEntries. Isso significa que o objetoLifecycledoNavBackStackEntryagora aguarda a conclusão dos efeitos especiais de entrada e saída antes de mudar oLifecycle.Statefinal - O
DialogFragmentNavigatoragora usa as APIs de transição ao navegar e mostrarNavBackStackEntries. Isso significa que o objetoLifecycledoNavBackStackEntryvai esperar que oLifecycledoDialogFragmentmude para o estadoDESTROYEDantes de mudar a si mesmo paraDESTROYED NavHostFragmentagora permite recuperar oNavControllerassim que oNavHostFragmenté anexado aoFragmentManager, em vez de apenas apósonCreate().- O suporte ao Navigation para módulos de recursos dinâmicos agora depende da biblioteca granular Play Feature Delivery
- O Safe Args do Navigation agora depende do Plug-in do Android para Gradle versão 7.3.0. Isso significa que ele só é compatível com as versões 7.3.0 e mais recentes.
Mudanças importantes na NavigationUI desde a versão 2.5.0
- Na transmissão do ID de um gráfico de navegação para
AppBarConfiguration(por exemplo, usando umMenu), aNavigationUIagora considera apenas o destino inicial desse gráfico como um nível superior em vez de marcar incorretamente cada destino no gráfico como um destino de nível superior. O comportamento da transmissão do ID de um destino individual não foi alterado. Essa mesma funcionalidade está disponível para seu próprio código com a nova funçãoisTopLevelDestinationemAppBarConfiguration - As integrações de
setupWithNavControlleremNavigationUIpara trabalhar com a barra de apps da parte de cima agora vão analisar os valoresR.stringdos argumentosReferenceTypeencontrados noandroid:labelnos valores de string em vez de transmitir o número inteiro do recurso gerado automaticamente NavigationUIagora fornece registros quando não é possível navegar por umMenuItemselecionado
Versão 2.6.0-rc02
24 de maio de 2023
Lançamento de androidx.navigation:navigation-*:2.6.0-rc02. A versão 2.6.0-rc02 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema com a navegação em fragmentos em que a navegação com
popUpToe a remoção de um fragmento da backstack sem recriar a visualização faziam com que a volta do sistema parasse de funcionar. (Ieb8d4, b/281726455).
Versão 2.6.0-rc01
10 de maio de 2023
Lançamento de androidx.navigation:navigation-*:2.6.0-rc01. A versão 2.6.0-rc01 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema na navegação com fragmentos em que a remoção de um fragmento por navegação com
popUpTono callback de ciclo de vidaonResume()causava umIllegalStateException. (I21884, b/279644470).
Versão 2.6.0-beta01
19 de abril de 2023
Lançamento de androidx.navigation:navigation-*:2.6.0-beta01. A versão 2.6.0-beta01 contém estas confirmações.
Novos recursos
NavBackStackEntryagora oferece uma implementação personalizada detoString. (Iff00b).
Correções de bugs
- Ao usar a navegação com fragmentos, tentar fazer manualmente uma
FragmentTransactionque adiciona um fragmento à backstack daFragmentManageragora vai gerar umaIllegalArgumentException. Sempre adicione fragmentos usando a APInavigate(). (I6d38e). - Quando há um
navigateque adiciona uma entrada e umpopBackStackque a remove no mesmo frame, a entrada superior resultante na backstack agora volta consistentemente para oRESUMEDLifecycle.State. (Id8067, b/276495952).
Versão 2.6.0-alpha09
5 de abril de 2023
Lançamento de androidx.navigation:navigation-*:2.6.0-alpha09. A versão 2.6.0-alpha09 contém estas confirmações.
Correções de bugs
- Correções para rotas inválidas. Agora, se um
NavDestinationcontiverNavArgumentnão anuláveis, a rota de destino precisará ter marcadores de posição para argumentos com o mesmo nome doNavArgumentnão anulável. (Ic62bf, b/274697949). - As navegações por link direto baseadas em
Action/MimeTypevão falhar se a operação de navegação não tiver umNavArgumentnão anulável exigido peloNavDestinationcom que oAction/MimeTypecorresponde. (Ibfa17, b/271777424). - Quando
NavControllerdefine um gráfico com a mesma rota e destinos do gráfico anterior, ele agora substitui corretamente os nós do gráfico atual e os destinos da backstack por novas instâncias. Isso corrige uma falha ao usaronLaunchSingleTopsem salvar o estado no Navigation Compose. Isso também corrige um erro em que a navegação para destinos associados ao gráfico raiz cria uma pilha de retorno incorreta. (I5bc58, b/275258161, b/275407804)
Versão 2.6.0-alpha08
22 de março de 2023
Lançamento de androidx.navigation:navigation-*:2.6.0-alpha08. A versão 2.6.0-alpha08 contém estas confirmações.
Novos recursos
NavHostFragmentagora permite recuperar oNavControllerassim que oNavHostFragmenté anexado aoFragmentManager, em vez de apenas apósonCreate(). (Ic6382, b/220186282).
Correções de bugs
- Correção de uma
NullPointerExceptionao remover um gráfico aninhado que inclui um argumento não anulável. (6b3581, b/249988437). - Ao usar a ação de voltar do sistema depois de navegar com
popUpTo, o estado doNavControllervai aparecer na entrada correta. (I3a8ec, b/270447657). - Agora,
FragmentNavigatorvai destacar entradas corretamente quando a pilha de retorno for destacada pelo sistema ou porpopBackStack(), e se a transação usa efeitos para o fragmento ou não. (I81bdf). - Adicionar fragmentos ao
FragmentNavigatorFragmentManagersem usar a navegação não vai mais causar uma falha. (b17204, b/274167493).
Atualizações de dependência
- A navegação agora depende do Lifecycle
2.6.1. (586fe7) - O Navigation agora depende do SavedState
1.2.1. (078e4e) - O Navigation agora depende do ProfileInstaller
1.3.0. (512f0c)
Versão 2.6.0-alpha07
8 de março de 2023
Lançamento de androidx.navigation:navigation-*:2.6.0-alpha07. A versão 2.6.0-alpha07 contém estas confirmações.
Correções de bugs
- As variantes da API
getBackStackEntry,popBackStackeclearBackStackque usam rotas agora usam padrões de rotas com argumentos e parâmetros de consulta anuláveis (I22294, b/269302500). - Foi corrigido um problema em que chamar
clearBackStack()doNavControllernão limpava o estado salvo no gerenciador de fragmentos associado à backstack limpa. (Ic1cce, b/271190202). - Foi corrigida uma regressão na versão 2.6.0-alpha06 que fazia com que o
MenuItemerrado noBottomNavigationViewfosse destacado ao usar o botão Voltar do sistema entre guias. (I634f6, b/270447657). - Correção de uma regressão na versão 2.6.0-alpha06 que impedia que os
NavBackStackEntrys fossem movidos para o estado RESUMED ao usarAnimations. (Ib3589, b/269646882).
Versão 2.6.0-alpha06
22 de fevereiro de 2023
Lançamento de androidx.navigation:navigation-*:2.6.0-alpha06. A versão 2.6.0-alpha06 contém estas confirmações.
Novos recursos
- Ao visualizar um elemento combinável com
NavHost, ele mostra ostartDestinationdo NavGraph por padrão (I2b89f).
Mudanças na API
- Todas as sobrecargas de
navigatedoNavControlleragora têm a anotação@MainThreadpara garantir que elas sejam chamadas na linha de execução principal (I2c0b0, b/263427111).
Correções de bugs
- Correção de uma falha ao tentar navegar durante o uso da Dynamic Fragment Navigation (I3ee29, b/268360479).
- Correção de bug em que a navegação para outro fragmento pelo botão "Voltar" do sistema não atualiza a barra da parte de baixo do item selecionado (If559f, b/269044426).
Problemas conhecidos
- Ao usar a navegação com fragmentos, o ciclo de vida do
NavBackStackEntrynão atingeRESUMEDao usar as APIsAnimation. (b/269646882). - Ao usar a navegação com fragmentos e navegar com
BottomNavigation, se você tentar restaurar uma backstack com várias entradas, oBottomMenuItemnão será atualizado corretamente. (b/270447657). - Ao usar o Navigation com Fragments, depois de restaurar o estado, o
NavBackStackEntryLifecyclenão recebeDESTROYEDquando o fragmento éDESTROYED. (b/270610768)
Versão 2.6.0-alpha05
8 de fevereiro de 2023
Lançamento de androidx.navigation:navigation-*:2.6.0-alpha05. A versão 2.6.0-alpha05 contém estas confirmações.
Novos recursos
NavController.popBackStack(route),NavController.getBackStackEntry(route),NavController.clearBackStack(route)agora oferecem suporte a rotas com argumentos preenchidos de forma parcial ou total. Os argumentos precisam ser uma correspondência exata com os argumentos da entrada (Iebd28, Ic678c, I3b37b, b/257514373).- O
FragmentNavigatoragora usa as APIs de transição ao navegar e mostrarNavBackStackEntries. Isso significa que o objetoLifecycledoNavBackStackEntryagora aguarda a conclusão dos efeitos especiais de entrada e saída antes de mudar oLifecycle.Statefinal (I3cb19, b/238686802). - O
DialogFragmentNavigatoragora usa as APIs de transição ao navegar e mostrarNavBackStackEntries. Isso significa que o objetoLifecycledoNavBackStackEntryvai esperar que oLifecycledoDialogFragmentmude para o estadoDESTROYEDantes de mudar a si mesmo paraDESTROYED(I53ee5, b/261213893).
Mudanças na API
- O
NavigatorStateagora fornece a APIprepareForTransitionpara permitir queNavigators movamNavBackStackEntriesparaLifecycle.States intermediários (I42c21, b/238686802). - Agora você pode acessar a backstack associada a um
NavGraphNavigatorou umComposeNavigatorusando uma propriedadebackstack. OComposeNavigatoragora também expõe o callbackonTransitionComplete()para marcar umaNavBackStackEntryque executou uma operação depopBackStackou navegação como concluída (I02062, I718db, b/257519195).
Correções de bugs
- O estado do navegador não vai mais funcionar ao usar as APIs
push/popWithTransitione quando a entrada já estiver sendo processada (Iadbfa, b/261213893). - Ao usar
launchSingleTopcom umNavGraphaninhado, todos os destinos que começam no destino original para ostartDestinationvão ser adicionados corretamente apenas para a parte de cima da backstack (Id4bea, b/253256629). - A navegação agora substitui corretamente a instância de
DialogFragmentao navegar para o mesmo destino com a flaglaunchSingleTopdefinida como verdadeira (I45b5a, b/149572817). - O SafeArgs do Navigation não vai mais causar um erro de compilação ao usar argumentos com exatamente 19 caracteres (Id60bc, b/257110095).
Versão 2.6.0-alpha04
9 de novembro de 2022
Lançamento de androidx.navigation:navigation-*:2.6.0-alpha04. A versão 2.6.0-alpha04 contém estas confirmações.
Novos recursos
- As subclasses personalizadas de
NavTypeagora podem modificarserializeAsValuepara serializar um valor em uma string, permitindo que a serialização e desserialização (viaparseValue) sejam totalmente encapsuladas na classeNavType.StringTypeagora substitui esse método para chamarUri.encodenoStringespecificado (Ie5213, b/247637434). NavigationUIagora fornece registros quando não é possível navegar por umMenuItemselecionado (I2af5a, b/247730357).
Correções de bugs
- Agora, os links diretos de navegação são analisados lentamente em vez de inicializados pelo gráfico, o que pode melhorar a performance do app na inicialização (Iab0ab).
- Correção da falha causada pela navegação após o link direto para um destino com argumentos padrão nulos (I51c24, b/243183636).
Atualização de dependências
- O suporte ao Navigation para módulos de recursos dinâmicos agora depende da biblioteca granular Play Feature Delivery (Ib4ddc).
- O Safe Args do Navigation agora depende do Plug-in do Android para Gradle versão 7.3.0. Isso significa que ele só é compatível com as versões 7.3.0 e mais recentes (I47e49).
Versão 2.6.0-alpha03
24 de outubro de 2022
Lançamento de androidx.navigation:navigation-*:2.6.0-alpha03. A versão 2.6.0-alpha03 contém estas confirmações.
Correções de bugs
- No Navigation
2.5.3:NavHostnão vai mais causar umaNoSuchElementExceptionquando não houver destino disponível paraCrossfadecompor. Agora, a composição vai ser ignorada (Ieb46e, b/253299416). - No Navigation
2.5.3: correção de um problema em que o estado salvo do Compose (por exemplo, os usos derememberSaveable) não era esquecido e removido quando um destino era retirado da backstack (I64949).
Atualizações de dependência
- O Navigation agora depende do Fragment
1.5.4(Icd424)
Versão 2.6.0-alpha02
5 de outubro de 2022
Lançamento de androidx.navigation:navigation-*:2.6.0-alpha02. A versão 2.6.0-alpha02 contém estas confirmações.
Mudanças de comportamento
- Na transmissão do ID de um gráfico de navegação para
AppBarConfiguration(por exemplo, usando umMenu), aNavigationUIagora considera apenas o destino inicial desse gráfico como um nível superior em vez de marcar incorretamente cada destino no gráfico como um destino de nível superior. O comportamento da transmissão do ID de um destino individual não foi alterado. Essa mesma funcionalidade está disponível para seu próprio código com a nova funçãoisTopLevelDestinationemAppBarConfiguration(Ie936e, b/238496771).
Correções de bugs
- O componente
navigation:navigation-fragmentagora depende da versão1.5.2do fragmento (I00ba4). - O item de menu selecionado não é mais atualizado durante a navegação para um destino
FloatingWindow, como uma caixa de diálogo (I4cde8, b/240308330).
Versão 2.6.0-alpha01
7 de setembro de 2022
Lançamento de androidx.navigation:navigation-*:2.6.0-alpha01. A versão 2.6.0-alpha01 contém estas confirmações.
Novos recursos
- As integrações de
setupWithNavControlleremNavigationUIpara trabalhar com a barra de apps da parte de cima agora vão analisar os valoresR.stringdos argumentosReferenceTypeencontrados noandroid:labelnos valores de string em vez de transmitir o número inteiro do recurso gerado automaticamente (I5f803, b/167959935). NavDeepLinkagora oferece suporte a valores padrão para matrizes, o que permite suporte para o mapeamento de parâmetros de consulta repetidos para o tipo de matriz do argumento.NavTypeagora também inclui um método padrão que pode ser substituído para combinar dois valores analisados (Id68c3, b/209977108).- Ao usar a string exata
${applicationId}como o marcador nos atributosapp:dataeapp:dataPatternno elemento de atividade de um arquivo XML de navegação, o marcador vai ser preenchido automaticamente com apackageNamedo contexto com a inflação (Iaabde, b/234223561). - A tentativa de criar um
NavDeepLinkvazio usando a DSLnavDeepLinkdo Kotlin agora vai resultar em um aviso de lint indicando que um link direto precisa de um URI, ação e/ou tipo MIME para ser válido (I08d2f, b/154038883).
Mudanças na API
- Foi adicionada a nova função de extensão
NavDestinationpara analisar rótulos dinâmicos com argumentos na forma deandroid:label="{arg}"em string. Ela oferece suporte a argumentosReferenceType, analisando valoresR.stringnos valores de string (I07d89, b/236269380).
Mudanças de comportamento
- Os
argumentsdo NavBackStackEntry e osargumentstransmitidos para umOnDestinationChangedListeneragora são apenas uma cópia dos argumentos imutáveis que foram criados ao navegar para o destino. Isso significa que as mudanças feitas nesses pacotes não vão ser aplicadas nos acessos subsequentes às instânciasargumentsou outrasOnDestinationChangedListener(I676f5).
Correções de bugs
- No Navigation
2.5.2: a navegação dinâmica agora tenta instalar corretamente os destinos de atividade de outros módulos antes de navegar até eles (Ia2c16, b/240292838). - No Navigation
2.5.2: a navegação agora substitui corretamente a instância do fragmento ao navegar para o mesmo destino e definir a sinalizaçãolaunchSingleTopcomo "true" (I5a2f1, b/237374580). - No Navigation
2.5.2: correção deIllegalStateExceptioncausada ao navegar para um gráfico aninhado duplo que compartilha um pai com um novo destino inicial mostrado (I9f7cb, b/243778589).
Versão 2.5
Versão 2.5.3
24 de outubro de 2022
Lançamento de androidx.navigation:navigation-*:2.5.3. A versão 2.5.3 contém estas confirmações.
Correções de bugs
NavHostnão vai mais causar umaNoSuchElementExceptionquando não houver destino disponível paraCrossfadecompor. Agora, a composição vai ser ignorada (Ieb46e, b/253299416).- Correção de um problema em que o estado salvo do Compose (por exemplo, os usos de
rememberSaveable) não era esquecido e removido quando um destino era retirado da backstack (I64949).
Versão 2.5.2
7 de setembro de 2022
Lançamento de androidx.navigation:navigation-*:2.5.2. A versão 2.5.2 contém estas confirmações.
Correções de bugs
- A navegação dinâmica agora tenta instalar corretamente os destinos de atividade de outros módulos antes de navegar até eles (Ia2c16, b/240292838).
- O Navigation agora substitui corretamente a instância do fragmento ao navegar para o mesmo destino e definir a sinalização
launchSingleTopcomo "true" (I5a2f1, b/237374580). - Correção de
IllegalStateExceptioncausada ao navegar para um gráfico aninhado duplo que compartilha um pai com um novo destino inicial mostrado (I9f7cb, b/243778589).
Atualização de dependências
- O Navigation
2.5.2agora depende do Fragment1.5.2. (aosp/2178734).
Versão 2.5.1
27 de julho de 2022
Lançamento de androidx.navigation:navigation-*:2.5.1. A versão 2.5.1 contém estas confirmações.
Correções de bugs
- O
Navigation Safe Argsnão vai mais causar avisos de descontinuação nas classes geradas ao usar tipos de argumento personalizados salvos em umBundle(Id86ed, b/237725966).
Atualizações de dependência
- A biblioteca Navigation agora depende do Lifecycle
2.5.1(Ib4451). - A biblioteca Navigation agora depende da Activity
1.5.1(I3efe8). - A biblioteca Navigation agora depende do Fragment
1.5.1(I56177).
Versão 2.5.0
29 de junho de 2022
Lançamento de androidx.navigation:navigation-*:2.5.0. A versão 2.5.0 contém estas confirmações.
Mudanças importantes desde a versão 2.4.0
- Integração de CreationExtras: a
Navigationagora pode fornecer uma interfaceViewModelProvider.Factorysem estado usando a classeCreationExtrasdo Lifecycle2.5.0.
SafeArgs do Navigation
- O
Navigation Safe Argsfez o upgrade da dependênciaAndroid Gradle Pluginpara usar7.0.4, não oferecendo mais suporte a versões do AGP anteriores a7.0. - Inclusão de suporte para o atributo build.gradle do namespace, que será usado em vez de applicationId.
Outras mudanças
- A API
visibleEntriesnão é mais experimental e oferece uma função para recuperar todas as entradas que tenham destinos visíveis de acordo com oNavController.
Versão 2.5.0-rc02
15 de junho de 2022
Lançamento de androidx.navigation:navigation-*:2.5.0-rc02. A versão 2.5.0-rc02 contém estas confirmações.
Correções de bugs
- Foi corrigida uma falha causada pela alternância rápida entre destinos inferiores ao usar o Navigation Compose
NavHost(I3979a, b/234054916). - O
Navigation SafeArgsnão vai falhar mais ao usar umapplicationIdSuffixe um namespace sem oapplicationIdou quando oapplicationIde o namespace forem diferentes (I754b1, b/233119646). - O
NavArgumentagora tem uma funçãotoString()personalizada para mostrar os valores internos do argumento (I900a8).
Versão 2.5.0-rc01
11 de maio de 2022
Lançamento de androidx.navigation:navigation-*:2.5.0-rc01. A versão 2.5.0-rc01 contém estas confirmações.
Novos recursos
- Uma nova regra de lint foi adicionada para alertar sobre a inserção de elementos
<deeplink>dentro de elementos<activity>no arquivonavigation.xml(Ic15a5, b/178403185).
Correções de bugs
- Os escopos combináveis em
NavHosteDialogHostagora são descartados na ordem esperada, ou seja, os elementos combináveis internos são descartados antes dos elementos externos (I157e6) - O SafeArgs do Navigation agora usa
PathSensitivity.RELATIVEnoArgumentsGenerationTaskpara permitir a realocação do cache. Isso significa que a entrada de cache agora pode ser reutilizada de um build de CI para um build local (I5f67c, b/173420454). - A regra de lint
UnrememberedGetBackStackEntryDetectorfoi atualizada para garantir que a chamada derememberao redor da chamada paragetBackStackEntry()também transmita um objetoNavBackStackEntrycomo uma chave (Ib7081, b/227382831).
Versão 2.5.0-beta01
20 de abril de 2022
Lançamento de androidx.navigation:navigation-*:2.5.0-beta01. A versão 2.5.0-beta01 contém estas confirmações.
Correções de bugs
- A
DialogNavigatoragora usapopWithTransitionao executar uma chamadadismiss(). Isso corrige uma disputa ao usar umViewModelno destinodialog, que causaria umaIllegalStateExceptionao dispensar a caixa de diálogo usando o sistema ou tocando fora da caixa de diálogo para sair (Id7376, b/226552301).
Atualizações de dependência
- O Navigation agora depende do Lifecycle
2.5.0-beta01, corrigindo umaIllegalStateExceptionao aninhar umNavHostem outroNavHostem uma guia de navegação não primária na parte inferior da tela ao usar várias backstacks.
Versão 2.5.0-alpha04
6 de abril de 2022
Lançamento de androidx.navigation:navigation-*:2.5.0-alpha04. A versão 2.5.0-alpha04 contém estas confirmações.
Mudanças na API
visibleEntriesnão é mais experimental (I4829f, b/225394514).
Correções de bugs
- O NavHost agora depende das
visibleEntriesdoNavControllerpara determinar quais entradas vão ser compostas. Isso significa que, ao usar o NavHost aninhado, oNavHostinterno vai ser animado corretamente (I4ba2b, b/225394514). - O
StateFlowdevisibleEntriesfornecido peloNavControlleragora se baseia no estado máximo do Lifecycle da entrada, em vez de no estado atual. Isso significa que, mesmo que o ciclo de vida do host donavControllerfique abaixo de "STARTED" (iniciado), a lista de partes visíveis permanece a mesma (I9e2a8, b/225394514). SavedStateViewFactoryagora oferece suporte ao uso deCreationExtrasmesmo quando inicializada com umSavedStateRegistryOwner. Se extras forem fornecidos, os argumentos inicializados serão ignorados (I6c43b, b/224844583).NavDeepLinkagora pode analisar URIs com um único parâmetro de consulta sem valor (I0efe8, b/148905489).- Strings vazias agora são consideradas argumentos válidos em links diretos (I70a0d, b/217399862).
Navigation Safe Argsnão vai falhar mais quando nenhumAndroidManifest.xmlestiver presente ao usar namespaces (I17ccf, b/227229815).
Versão 2.5.0-alpha03
23 de fevereiro de 2022
Lançamento de androidx.navigation:navigation-*:2.5.0-alpha03. A versão 2.5.0-alpha03 contém estas confirmações.
Mudanças na API
- Agora é possível transmitir
CreationExtrasaby navGraphViewModelspara criar umViewModel(I29217, b/217618359).
Correções de bugs
NavDeepLinksagora oferece suporte aos novos caracteres de linha incorporados em rotas/URIs de link direto (I513d1, b/217815060).CreationExtrasagora vai funcionar corretamente quando usado comNavBackStackEntriespara criar ViewModels (I69161, b/217617710).- O Safe Args de navegação agora oferece suporte ao uso do namespace definido
no
build.gradleem vez do pacote no AndroidManifest (I659ef, b/217414933).
Versão 2.5.0-alpha02
9 de fevereiro de 2022
Lançamento de androidx.navigation:navigation-*:2.5.0-alpha02. A versão 2.5.0-alpha02 contém estas confirmações.
Correções de bugs
- No Navigation
2.4.1: oNavHostFragmentagora define corretamente a classeOnBackPressedDispatcherao usar a vinculação de visualizações com gráficos aninhados (Ifbb51, b/214577959). - No Navigation
2.4.1: quando os links diretos usam váriosNavGraphs aninhados, o backstack inclui corretamente os destinos iniciais intermediários (I504c0, b/214383060).
Versão 2.5.0-alpha01
26 de janeiro de 2022
Lançamento de androidx.navigation:navigation-*:2.5.0-alpha01. A versão 2.5.0-alpha01 contém estas confirmações.
Novos recursos
NavBackStackEntryagora se integra ao ViewModel CreationExtras, introduzido como parte do Lifecycle2.5.0-alpha01(Ib9fe2, b/207012490).
Correções de bugs
- Um problema em que o acesso a um
ViewModelcriado porby navGraphViewModels()do métodoonCreate()de um fragmento falhava com umaIllegalStateExceptionfoi corrigido (I8a14d). NavDeepLinks não vão decodificar mais desnecessariamente os argumentos duas vezes, ou seja, os argumentos adequados agora vão ser transmitidos para o destino final (I31b0a, b/210711399).
Safe Args
- O Safe Args agora depende do Plug-in do Android para Gradle versão 7.0.4. Isso significa que o Navigation Safe Args não é mais compatível com as versões do Android Studio anteriores à 7.0, mas agora é compatível com o Plug-in do Android para Gradle 7.1.0 e versões mais recentes (I41c88, b/213086135, b/207670704).
Versão 2.4.2
Versão 2.4.2
6 de abril de 2022
Lançamento de androidx.navigation:navigation-*:2.4.2. A versão 2.4.2 contém estas confirmações.
Correções de bugs
- Backport do Navigation
2.5.0-alpha03:NavDeepLinksagora oferece suporte aos novos caracteres de linha incorporados em rotas/URIs de link direto (I513d1, b/217815060). - Backport do Navigation
2.5.0-alpha03: o Navigation SafeArgs agora oferece suporte ao namespace definido nobuild.gradleno lugar do pacote no AndroidManifest (I659ef, b/217414933). - Backport do Navigation
2.5.0-alpha04:Navigation Safe Argsnão vai falhar mais quando nenhumAndroidManifest.xmlestiver presente ao usar namespaces (I17ccf, b/227229815). - Backport do Navigation
2.5.0-alpha04: strings vazias agora são consideradas argumentos válidos em links diretos (I70a0d, b/217399862).
Versão 2.4.1
Versão 2.4.1
9 de fevereiro de 2022
Lançamento de androidx.navigation:navigation-*:2.4.1. A versão 2.4.1 contém estas confirmações.
Correções de bugs
- O
NavHostFragmentagora define corretamente a classeOnBackPressedDispatcherao usar a vinculação de visualizações com gráficos aninhados (Ifbb51, b/214577959). - Agora, quando há links diretos usando vários
NavGraphs aninhados, a pilha de retorno inclui corretamente destinos iniciais intermediários (I504c0, b/214383060). - Backport do Navigation
2.5.0-alpha01: correção de um problema em que o acesso a um ViewModel criado peloby navGraphViewModels()usando oonCreate()de um fragmento falhava com umaIllegalStateException(I8a14d). - Backport do Navigation
2.5.0-alpha01:NavDeepLinks deixaram de decodificar argumentos desnecessariamente duas vezes, ou seja, os argumentos decodificados da maneira correta agora vão ser transmitidos para o destino final (I31b0a, b/210711399). - Backport do Navigation
2.5.0-alpha01: o Safe Args agora depende do Plug-in do Android para Gradle versão 7.0.4. Isso significa que o Navigation Safe Args não oferece mais suporte a versões do Android Studio anteriores à 7.0, mas agora é compatível com o Plug-in do Android para Gradle 7.1.0 e versões mais recentes (I41c88, b/213086135, b/207670704).
Versão 2.4.0
Versão 2.4.0
26 de janeiro de 2022
Lançamento de androidx.navigation:navigation-*:2.4.0. A versão 2.4.0 contém estas confirmações.
Mudanças importantes desde a versão 2.3.0
- Todos os artefatos de navegação foram reescritos em Kotlin. Isso melhorou a nulidade de classes usando a generalização (como subclasses
NavType). Todas as funções de extensão do Kotlin que costumavam fazer parte dos artefatos-ktxforam movidas para os respectivos artefatos principais. Os artefatos-ktxvão continuar sendo publicados, mas estão completamente vazios - O artefato
navigation-fragmentagora contém uma implementação pré-criada de um layout de dois painéis pelo novoAbstractListDetailFragment. Esse fragmento usa umSlidingPaneLayoutpara gerenciar um painel de lista (que a subclasse fornece) e um painel de detalhes, que usa umNavHostFragmentcomo implementação, conforme mostrado no nosso exemplo de implementação. - O método
currentBackStackEntryAsFlow()noNavControllerfornece umFlowque é emitido sempre que aNavBackStackEntryatual muda. Esse fluxo pode ser usado como uma alternativa ao gerenciamento manual de umOnDestinationChangedListener - O NavController agora permite extrair uma lista de todas as instâncias
NavBackStackEntryvisíveis como umStateFlowusando a propriedadevisibleEntriesexperimental. - Agora é possível estender a classe
NavTypepara criar NavTypes personalizados. Só há suporte para tipos personalizados ao criar o gráfico de navegação de maneira programática, por exemplo, usando a DSL do Kotlin para gráficos de navegação. A navegação agora fornece APIs
findStartDestination()egetHierarchy()que podem ser usadas para ajudar a implementar a NavigationUI personalizada.findStartDestination()é uma função de extensão deNavGraphque localiza o destino inicial real que é exibido quando você navega até o gráfico, mesmo que ostartDestinationseja umNavGraphaninhado. AgetHierarchy()é uma função doNavDestinationque pode ser usada para verificar se determinado destino está na hierarquia de outro.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }Os métodos da
NavigationUIque usavam umaBottomNavigationViewforam atualizados para usar a superclasseNavigationBarView, introduzida no Material1.4.0. Isso permite que esses métodos sejam usados comNavigationRailView.Ao inflar um elemento
<action>via XML, os atributos de animação podem usar atributos extraídos do tema com a sintaxeapp:enterAnim="?attr/transitionEnter".O Safe Args agora gera um método
fromSavedStateHandle()para cada classeNavArgs(#122 (link em inglês), 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) }
Rotas de navegação e a DSL do Kotlin
As versões anteriores do componente de navegação dependiam de cada destino ter um ID de constante inteiro que o identificava exclusivamente em destinos irmãos e permitiam que você enviasse navigate() diretamente para esse destino ou por uma ação. Embora isso continue sendo válido e útil, principalmente nos casos em que você define o gráfico de navegação em XML e pode usar constantes R.id geradas automaticamente ou o Safe Args, que usa essas constantes para gerar código durante a compilação, esse sistema de números inteiros únicos não capturava o significado semântico e a expressividade necessária para oferecer suporte a gráficos totalmente dinâmicos criados programaticamente durante a execução pela DSL de navegação do Kotlin.
Esta versão introduz uma nova opção para identificar exclusivamente um destino em um gráfico de navegação pela rota dele. Uma rota é uma String que define o caminho exclusivo de um destino. Todos os métodos da DSL do Kotlin que receberam um ID de destino foram descontinuados e substituídos por uma API equivalente que usa uma rota.
Cada rota precisa ser tratada como a parte "path" (caminho) de um Uri que define o destino, por exemplo, home, profile/{userId}, profile/{userId}/friends etc. Quando a identidade de um destino é associada a um conteúdo específico, esses argumentos dinâmicos precisam fazer parte do trajeto, seguindo as mesmas regras de links diretos implícitos.
Todas as APIs NavController que recebiam apenas um ID agora têm uma sobrecarga que usa uma String de rota. Isso inclui navigate(), popBackStack(), popUpTo() e getBackStackEntry().
Isso teve algumas implicações na API:
- A propriedade
popUpTona DSL do Kotlin foi descontinuada e substituída porpopUpToId. - A API
getStartDestination()foi descontinuada e substituída porgetStartDestinationId().
Diferente da navegação por ID, a navegação por rota segue as mesmas regras dos links diretos implícitos, em que é possível navegar diretamente para qualquer destino em qualquer gráfico aninhado, garantindo que essas rotas sejam utilizáveis em vários módulos sem adicionar explicitamente um link direto visível externamente para cada destino.
Navigation Compose
O artefato navigation-compose fornece integração entre o componente de navegação e o Jetpack Compose. Ele usa funções @Composable como destinos no aplicativo.
Novidades desta versão:
- Um elemento
NavHostcombinável que permite construir o gráfico de navegação com uma DSL do Kotlin, usando destinoscomposableedialog, além de suporte a navegadores opcionais, como os do Material de navegação do Accompanist. - Suporte obrigatório com fading cruzado entre destinos. A Animação de navegação do Accompanist pode ser usada para controlar as transições de entrada e saída usando APIs experimentais do Compose.
- Escopo de um
Lifecyclepara cada destino de composição. Cada destino só chega ao estadoRESUMED(retomado) quando uma transição de entrada termina e cai imediatamente emSTARTED(iniciado) quando uma transição de saída começa, permitindo que você evite todos os problemas deIllegalStateExceptione multitoque, acionando apenas uma chamadanavigatequando oLifecycleforRESUMED(retomado). - Escopo de
ViewModel(pela APIviewModel()do Lifecycle ViewModel Compose2.4.0ouhiltViewModel()do Hilt Navigation Compose1.0.0no nível de destino), fornecendo um escopo que sobrevive a mudanças de configuração e ficando na backstack (quando o conteúdo de composição é descartado) e um sinal noonCleared()do ViewModel que indica o descarte permanente e a limpeza do estado associado àNavBackStackEntry. - Escopo do estado
rememberSaveableno nível do destino, garantindo que todo o estado combinável seja salvo e restaurado automaticamente quando você retornar a um destino. - Suporte total ao salvamento e à restauração do estado do
NavControllere o estado do destino após a interrupção e a recriação do processo. - Integração automática com o botão "Voltar" do sistema.
Suporte à transmissão de argumentos, anexação de links diretos para destinos e retorno de um resultado para destinos anteriores.
Auxiliares específicos do Compose em
rememberNavController()ecurrentBackStackEntryAsState()para permitir a elevação do estado e conectarNavControllera elementos combináveis fora doNavHost, como uma barra de navegação inferior.
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()
}
}
}
Consulte o guia de navegação do Compose para ver mais informações.
Várias backstacks
O NavController é responsável por gerenciar a backstack dos destinos, adicionando destinos a ela quando o método navigate() navega até eles e os removendo ao chamar popBackStack() ou acionar o botão "Voltar" do sistema. A classe NavOptions existente e a integração com elementos <action> no XML dos gráficos de navegação foram expandidas para oferecer suporte ao salvamento e à restauração da backstack.
Como parte dessa mudança, os métodos NavigationUI de onNavDestinationSelected(), BottomNavigationView.setupWithNavController() e NavigationView.setupWithNavController() agora salvam e restauram automaticamente o estado dos destinos removidos, permitindo o suporte a várias backstacks sem mudanças no código. Ao usar a navegação com fragmentos, essa é a forma recomendada para integrar várias backstacks
As APIs de base para salvar e restaurar o estado são expostas por várias superfícies:
No XML de navegação, o elemento
<action>agora pode usar os atributos booleanos deapp:popUpToSaveStateeapp:restoreStatepara salvar o estado de quaisquer destinos removidos usandoapp:popUpToe restaurar o estado associado ao destino transmitido como oapp: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” />Nas
navOptionsda DSL do Kotlin, é possível adicionar as propriedades booleanasrestoreStateesaveStateno builderpopUpTo:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }Ao criar manualmente um objeto
NavOptionsusando oNavOptions.Builder, é possível usarsetRestoreState()e a nova sobrecarga parasetPopUpTo()que recebe um parâmetrosaveStateextra.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);As chamadas programáticas para
popBackStack()agora podem incluir um parâmetrosaveStateextra.Agora você pode usar o método
clearBackStack()para limpar qualquer estado salvo compopBackStack()oupopUpToSaveState.
Em todos os casos, o NavController salva e restaura o estado de cada NavBackStackEntry, incluindo qualquer instância de destino ViewModel com escopo. As APIs Navigator foram atualizadas para permitir que cada Navigator aceite o salvamento e a restauração do próprio estado.
Mudanças de comportamento
- O
NavDeepLinkBuilderagora adicionaPendingIntent.FLAG_IMMUTABLEàPendingIntentretornada porcreatePendingIntent(), garantindo que essa API funcione conforme esperado quando destinada ao Android 12. - O Navigation agora depende do
Lifecycle
2.3.1e marcasetGraph(),popBackStack(),navigateUp()enavigate()como os métodos que atualizam oLifecycledaNavBackStackEntry, como@MainThread, alinhando o componente de navegação à aplicação da linha de execução principal introduzida no Lifecycle2.3.0 - Os links diretos agora verificam se todos os argumentos necessários (aqueles sem valores padrão) estão presentes no
Uri. - Os argumentos analisados de
NavDeepLinkagora consideram símbolos de libra da mesma forma que os pontos de interrogação como separador entre segmentos de caminho, impedindo que um argumento se estenda pelo símbolo de libra. - Ao gerar ações, o código Kotlin criado pelo Safe Args agora coloca argumentos sem valores padrão antes daqueles com valores padrão como parâmetros
- Ao gerar argumentos, o Safe Args agora coloca os parâmetros sem valores padrão antes daqueles com valores padrão
- O Safe Args agora depende do Plug-in do Android para Gradle 4.2.0. Isso significa que você não vai receber mais o aviso sobre o uso do
applicationIdTextResource.
Problemas conhecidos
- Correção no Navigation
2.5.0-alpha01: o acesso a umViewModelcriado usandoby navGraphViewModels()pelo métodoonCreate()de um fragmento falha com umaIllegalStateException(b/213504272). - Correção np Navigation
2.5.0-alpha01: o Safe Args 2.4.0 não oferece suporte ao Plug-in do Android para Gradle 7.1.0 e versões mais recentes (b/213086135). - Link direto com vários gráficos de navegação aninhados não criam corretamente a backstack completa (b/214383060).
Versão 2.4.0-rc01
15 de dezembro de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-rc01. A versão 2.4.0-rc01 contém estas confirmações.
Mudanças de comportamento
- Os argumentos analisados de
NavDeepLinkagora consideram símbolos de libra da mesma forma que os pontos de interrogação como um separador entre argumentos (I21309, b/180042703).
Correções de bugs
- Os links diretos não vão mais ignorar argumentos com valores iguais ao nome do marcador (If8017, b/207389470).
- O
NavControllernão falhará mais ao exibir um destino aninhado usando transições depois que oNavControllerfor restaurado (I0f7c9, b/205021623). - A mensagem de erro ao usar um
startDestinationinválido passará a usar a rota de destino inicial, se disponível (I86b9d, b/208041894).
Correções de bugs do Navigation Compose
- Correção da possível falha causada pela alternância rápida entre o destino inicial e outro destino usando os itens do menu de navegação inferior (Ic8976, b/208887901).
- O destino da caixa de diálogo agora é restaurado corretamente na parte superior da tela após alterações de configuração ou encerramento de processo (I4c0dc, b/207386169).
- Correção de um problema em que a tentativa de recuperar um
ViewModeldoNavBackStackEntryde uma caixa de diálogo falhava quando ela era dispensada (I6b96d, b/206465487). - Correção de um problema que resultava em recomposições infinitas ao usar destinos
activitycom oNavHostdo Navigation Compose (I8f64c). - Correção de um vazamento no Navigation Compose em que ele se prendia a uma referência da atividade antiga após uma alteração de configuração ou encerramento de processo (I4efcb, b/204905432).
Correções de bugs do Safe Args
SafeArgsnão falha mais ao tentar restaurar matrizes comparáveis personalizadas após a interrupção do processo (I618e8, b/207315994).- Correção de um bug em Safe Args que não permitia que matrizes booleanas tivessem um valor
null(I8c396, b/174787525).
Versão 2.4.0-beta02
3 de novembro de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-beta02. A versão 2.4.0-beta02 contém estas confirmações.
Mudanças em APIs
- Agora, o gerenciamento de links diretos explícitos e implícitos
adiciona automaticamente a sinalização
saveStateao navegar para outro gráfico, garantindo que esse código, comoNavigationUI.setupWithNavController, e códigos que usam várias backstacks funcionam conforme o esperado (Ic8807).
Mudanças de comportamento
- Os padrões de links diretos agora são compilados lentamente em NavDeepLink, em vez de durante a inflação. Isso melhora o tempo de inflação dos gráficos de navegação que incluem links diretos (b8d257, b/184149935).
Correções de bugs
- Foi corrigido um problema em que NavBackStackEntries eram enviadas ao
Lifecycle.State.CREATEDdepois de passar para o estadoLifecycle.State.STARTEDquando oNavHostera adicionado diretamente ao métodosetContent()da atividade (Ia5ac1, b/203536683). - Uma disputa em que
a saída de um destino
DialogFragmentda backstack antes da exibição da caixa de diálogo não dispensava a caixa de diálogo que resultava em uma falha quando a caixa de diálogo era dispensada manualmente pelo usuário foi corrigida (I687e5). - Corrigido um problema em que a
API
onNavDestinationSelectednaNavigationUIretornavatruemesmo que você não tivessenavigate()(navegado) para esse gráfico de navegação. Agora, a API usa a mesma lógica usada internamente pelosetupWithNavControllerpara selecionar apenas oMenuItemassociado ao destino atual usando ahierarchydo destino (I2b053).
Versão 2.4.0-beta01
27 de outubro de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-beta01. A versão 2.4.0-beta01 contém estas confirmações.
Novos recursos
- Agora, é possível usar o
by navGraphViewModelcom uma rota como alternativa ao uso de um ID. Assim, você pode oferecer mais suporte ao uso da DSL de navegação do Kotlin com fragmentos (I901e3, b/201446416).
Mudanças na API
- A API
visibleEntriesagora é experimental (I93f6f).
Correções de bugs
- Os ViewModels não serão mais destruídos quando as transições forem interrompidas na navegação entre as mesmas telas (Id52d8, b/200817333).
- Os argumentos
NavDeepLinkanuláveis não exigem mais um valor padrão ao adicionar links diretos paraNavDestinations (I5aad4, b/201320030). - NavBackStackEntries com ciclos de vida diferentes não são mais consideradas iguais. Isso significa que o NavHost poderá recompor corretamente todos os destinos ao fazer a navegação usando singleTop e selecionar novamente os itens do menu de baixo (I1b351, b/196997433).
- Corrigido um problema com o
AbstractListDetailFragmentque fazia com que os atributoslayout_widthelayout_weightno painel de listas retornado poronCreateListPaneView()fossem processados incorretamente ou ignorados (f5fbf3). - O estado visual dos destinos de caixas de diálogo agora
está corretamente sincronizado com o estado do
DialogFragmentNavigator. Isso significa que chamar manualmente a APIdismiss()assíncrona para oDialogFragmentagora limpa corretamente todos os destinos de caixas de diálogo acima da caixa de diálogo dispensada. Isso não afeta casos em que você usapopUpTooupopBackStack()para dispensar a caixa de diálogo (I77ba2). - O
AbstractAppBarOnDestinationChangedListeneragora tem mensagens de erro mais claras paraonDestinationChanged()(Ie742d).
Versão 2.4.0-alpha10
29 de setembro de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha10. A versão 2.4.0-alpha10 contém estas confirmações.
Novos recursos
- O NavController agora permite acessar uma lista de todas as
instâncias
NavBackStackEntryvisíveis usando o StateFlowvisibleEntries(Ia964e). - O método
rememberNavController()agora usa um conjunto opcional de instânciasNavigatorque vão ser adicionadas aoNavControllerretornado para oferecer melhor suporte a navegadores opcionais, como os do Material de navegação do Accompanist (I4619e).
Correções de bugs
- A navegação dinâmica não falhará mais quando a atividade for recriada (Ifa6a3, b/197942869).
- Corrigido um problema com o botão "Voltar" do sistema, que ocorre somente depois de retornar a um destino de composição que contém um
NavHost(3ed148, b/195668143). - SafeArgs agora gera os argumentos para
fromBundle()efromSavedStateHandle()na ordem correta dos parâmetros (I824a8, b/200059831).
Versão 2.4.0-alpha09
15 de setembro de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha09. A versão 2.4.0-alpha09 contém estas confirmações.
Novos recursos
- Agora você pode usar o método
clearBackStack()para limpar qualquer estado salvo compopBackStack()oupopUpToSaveState(I80a0f). - Agora você pode transmitir uma lista de argumentos e/ou links diretos para o builder do gráfico de navegação aninhado. Eles vão ser adicionados automaticamente ao gráfico resultante (I8a470, b/182545357).
Mudanças na API
- A função
navArgumentdo DSL do Kotlin agora faz parte denavigation-commonem vez denavigation-compose. Para continuar usando essa função, você precisará atualizar as importações (I1d095).
Mudanças de comportamento
- Ao gerar argumentos, o Safe Args agora coloca os parâmetros sem valores padrão antes daqueles com valores padrão (I89709, b/198493585).
Correções de bugs
- Ao usar o Navigation Compose, o NavGraphs só será
DESTROYED(destruído) depois que todos os filhos também tiverem sidoDESTROYED(I86552, b/198741720). - Os argumentos
NavDeepLinkanuláveis não exigem mais um valor padrão (Ia14ef, b/198689811). - Chamar
setGraph()com um novo gráfico agora também limpa todas as backstacks salvas, além do comportamento anterior de visualizar a backstack (I97f96). - Foi corrigido um problema em que
instâncias de
OnDestinationChangedListenere ocurrentBackStackEntryFlownão eram notificadas ao usarlaunchSingleTop(Iaaebc).
Atualizações de dependência
- O Navigation Compose agora depende da Activity Compose 1.3.1 (I05829).
- O Navigation Compose agora depende da
Lifecycle ViewModel Compose
2.4.0-beta01(Ib86a3).
Versão 2.4.0-alpha08
1.º de setembro de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha08. A versão 2.4.0-alpha08 contém estas confirmações.
Novos recursos
- Agora é possível estender a classe
NavTypepara criar NavTypes personalizados. Só há suporte para tipos personalizados ao criar o gráfico de navegação de maneira programática, por exemplo, usando a DSL do Kotlin para gráficos de navegação. (I78440, b/196871885).
Mudanças de comportamento
- Ao gerar ações, o código Kotlin criado pelo Safe Args agora coloca argumentos sem valores padrão antes daqueles com valores padrão como parâmetros (Idb697, b/188855904).
- Os links diretos agora verificam se todos os argumentos necessários (aqueles sem valores padrão) estão presentes no
Uri. (#204, em inglês, e b/185527157).
Correções de bugs
- O uso de
getBackStackEntryepreviousBackStackEntryno método composable(), em conjunto comremember(), não vai causar mais uma exceção se não houver nenhum destino na backstack (I75138, b/194313238). - O Navigation Compose agora faz a recomposição corretamente ao mudar argumentos da
backstack e usar
launchSingleTop=true(Iebd69, b/186392337). - Uma
ArrayIndexOutOfBoundsExceptionnão ocorrerá mais ao chamar o métodosetGraphusando um gráfico com 13 ou 29 destinos (I1a9f1, b/195171984). - O gerador Java do Safe Args não causará mais avisos de lint ao gerar classes Args (I1a666, b/185843837).
Contribuição externa
- Agradecemos a ospixd (link em inglês) por garantir que os links diretos verifiquem se todos os argumentos necessários (aqueles sem valores padrão) estão presentes no
Uri(#204, em inglês, e b/185527157).
Versão 2.4.0-alpha07
18 de agosto de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha07. A versão 2.4.0-alpha07 contém estas confirmações.
Correções de bugs
- O Navigation Compose agora salva corretamente o estado após mudanças na configuração e ao alterar gráficos usando o recurso de várias backstacks (If5a3d, b/195141957).
- Selecionar novamente a mesma guia ao usar o Navigation Compose com várias backstacks não resultará mais em uma tela em branco (I860dc, b/194925622).
- O
NavHostagora observa mudanças noLifecycle.StatedeNavBackStackEntrys, o que significa que umNavHostem um fragmento agora será recomposto corretamente à medida que o ciclo de vida muda, em vez de resultar em uma tela em branco (I4eb85, b/195864489). - Foi corrigido um problema em que a ação de dispensar um
DialogFragmentnão atualizava corretamente o estadoNavControllerdepois de recriar a atividade, por exemplo, após uma mudança de configuração (Icd72b). - Foi corrigido um problema em que mostrar um destino de caixa de diálogo não atualizava o processamento do botão "Voltar" do sistema para o NavController, possivelmente fazendo com que o NavController interceptasse o botão, mesmo que ele não tivesse nenhuma backstack para mostrar (If3b34).
- O Safe Args agora gera automaticamente um método
toSavedStateHandlepara argumentos que podem ser usados para testar seu códigoViewModel(If1e2d, b/193353880).
Versão 2.4.0-alpha06
4 de agosto de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha06. A versão 2.4.0-alpha06 contém estas confirmações.
Mudanças na API
- Os métodos
requireSlidingPaneLayout()erequireDetailPaneNavHostFragment()noAbstractListDetailFragmentforam renomeados comogetSlidingPaneLayout()egetDetailPaneNavHostFragment(), respectivamente (I34a08).
Mudanças de comportamento
- Ao navegar com animações (como
Crossfade), oLifecycledo novo destino agora só alcança o estadoRESUMED(retomado) quando a animação é concluída (If0543, b/172112072, b/194301889). - O
NavHostdo Navigation Compose agora define o gráfico como parte da primeira composição (Ieb7be).
Correções de bugs
- Abrir o último destino de um gráfico de navegação não gera mais uma
ClassCastException(If0543, b/172112072, b/194301889). - Corrigida uma
NullPointerExceptionque ocorria ao adicionar um link direto sem umUrie navegar por uma rota ou link direto (938a0c, b/193805425). - Um problema no Navigation Compose, em que
uma
NavBackStackEntryde link direto não alcançava o estadoRESUMED(retomado) foi corrigido (I192c5). - Foi corrigido um problema em que mostrar um destino de caixa de diálogo não atualizava o processamento do botão "Voltar" do NavController do sistema, possivelmente fazendo com que o NavController interceptasse o botão, mesmo que ele não tivesse nenhuma backstack para mostrar (aosp/1782668).
Versão 2.4.0-alpha05
21 de julho de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha05. A versão 2.4.0-alpha05 contém estas confirmações.
Mudanças de comportamento
- O
NavHostdo Navigation Compose agora sempre usa Crossfades ao navegar por destinos (I07049, b/172112072). - Agora é possível fazer mudanças no gráfico de um NavHost. Gráficos
com o mesmo startDestination e destinos no gráfico vão ser considerados
iguais e não apagarão o backstack de
NavController(I0b8db, b/175392262).
Correções de bugs
- Correção de uma
NoSuchElementExceptionao chamarpopBackStack()de dentro de umLifecycleObserveranexado a umaNavBackStackEntrycausada por atualizações reentrantes ao estado do NavController (I64621). - O
AbstractListDetailFragmentagora permite que oSlidingPaneLayoutseja completamente removido do seu APK quando oAbstractListDetailFragmentnão for usado (I611ad). - O
NavGraphe oNavDestinationagora substituem o método equals para que dois objetos com os mesmos valores sejam considerados iguais (I166eb, b/175392262).
Versão 2.4.0-alpha04
1º de julho de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha04. A versão 2.4.0-alpha04 contém essas confirmações.
Novos recursos
- O artefato
navigation-fragmentagora contém uma implementação pré-criada de um layout de dois painéis pelo novoAbstractListDetailFragment. Esse fragmento usa umSlidingPaneLayoutpara gerenciar um painel de lista (que a subclasse fornece) e um painel de detalhes, que usa umNavHostFragmentcomo implementação, conforme mostrado no nosso exemplo de implementação (Iac4be, b/191276636). - O
NavHostdo artefatonavigation-composeagora é compatível com destinosdialog, além decomposable. Esses destinos de caixas de diálogo serão exibidos dentro de umaDialogde composição, flutuando acima do destinocomposableatual (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()
}
}
}
Mudanças na API
- A função
addemNavigatorStatefoi renomeada comopush. Todas as chamadas atuais paraadd()precisarão ser mudadas para push() (Ie89fc, b/172112072). - As instâncias
Navigatorpersonalizadas agora podem usar as APIspushWithTransactionepopWithTransitionemNavigatorStatepara enviar ou inserir um destino de forma assíncrona. Observe que essas APIs ainda não são usadas por nenhum dos navegadores incluídos (Ic4d7c, b/172112072).
Mudanças de comportamento
- O
NavDeepLinkBuilderagora adicionaPendingIntent.FLAG_IMMUTABLEàPendingIntentretornada porcreatePendingIntent(), garantindo que essa API funcione conforme esperado quando destinada ao Android 12 (If8c52).
Correções de bugs
- Correção de um problema com
<include-dynamic>em que os argumentos passados para o gráfico não eram transmitidos corretamente para o gráfico incluído dinamicamente (I3e115). - Correção de uma
NullPointerExceptionao navegar para um destino usando um argumentostring[]com um valor padrão de@null(I1fbe8). - Adição de regras do ProGuard para
@Navigator.Name, corrigindo problemas ao usar o modo completo R8 3.1 (I2add9, b/191654433). - O SafeArgs não falhará mais ao criar seu app com versões de
Kotlinantes de1.5.0(Icd1ff, b/190739257).
Versão 2.4.0-alpha03
16 de junho de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha03. A versão 2.4.0-alpha03 contém estas confirmações.
Correções de bugs
- Correção de um problema em que duas chamadas
navigate()eram necessárias para navegar até um gráfico dinâmico incluído (I7785c, b/188859835). - Foi corrigida uma regressão introduzida no
Navigation
2.4.0-alpha01, em quesetupActionBarWithNavController()não removia corretamente o ícone "Para cima" quando em um destino de nível superior (I5d443, b/189868637). - Correção de um
IllegalStateExceptionao chamarpopBackStack()após destacar anteriormente o gráfico raiz do NavController (I2a330, b/190265699). - As regras do ProGuard para
by navArgs()agora são aplicadas corretamente ao usarnavigation-commonou quaisquer artefatos que dependam dele (I68800, b/190082521). - Um
OnDestinationChangedListenerque chamanavigate()na primeira vez que recebe um callback agora recebe corretamente um segundo callback com o destino para o qual ele navegou (Ie5f9e, b/190228815). - O Safe Args não falha mais ao ser usado com módulos de recursos dinâmicos e o AGP 7.0+ (I69518, b/189966576).
Problema conhecido
- O Safe Args falhará com um erro
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ao usar o Gradle6.7.0devido a uma dependência em uma versão mais antiga do Kotlin. Para resolver isso, atualize para usar o Gradle 7.0 (b/190739257).
Versão 2.4.0-alpha02
2 de junho de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha02. A versão 2.4.0-alpha02 contém estas confirmações.
Novos recursos
- O Routes agora oferece suporte a destinos de atividade, fragmento e caixa de diálogo, assim como em toda a DSL DynamicNavigation do Kotlin (Ib5544, Ia617b, I22f96, b/188914648, b/188901565).
- A
NavigationUIadicionou temporariamente APIs experimentais para permitir a desativação da opção de salvar seu estado. Embora salvar o estado seja o comportamento correto, algumas bibliotecas descontinuadas sendo usadas (por exemplo, fragmentos retidos) não têm suporte para o salvamento do estado. Isso dá aos apps a oportunidade de fazer lentamente a conversão e deixar de usar APIs sem suporte (Idf93c). A navegação agora fornece APIs
findDestination()egetHierarchy()que podem ser usadas para ajudar a implementar a NavigationUI personalizada. AfindDestination()é uma função de extensão noNavGraphque localizará um destino no gráfico. AgetHierarchy()é uma função noNavDestinationque pode ser usada para verificar se um determinado destino está na hierarquia de outro (I2932f, b/188183365).val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }Os métodos da NavigationUI que usavam um
BottomNavigationViewforam atualizados para usar a superclasse introduzida no Material1.4.0,NavigationBarView. Isso permite que esses métodos sejam usados comNavigationRailView(Ib0b36, b/182938895).Ao inflar um elemento
<action>via XML, os atributos de animação podem usar atributos extraídos do tema usando a sintaxeapp:enterAnim="?attr/transitionEnter"(I07bc1, b/178291654).
Mudanças na API
- Os builders da DSL do Kotlin que usam um ID foram descontinuados e precisam ser substituídos por builders que usam rotas (I85b42, b/188816479) (I9f58f, b/188816479).
Correções de bugs
DialogFragmentNavigatoragora usa a APINavigatorState.pop()para informar aoNavControllerquando uma caixa de diálogo é dispensada pressionando o botão "Voltar" do sistema ou clicando fora dela. Isso garante que o estado doNavControllervai estar sempre sincronizado com o estado do Navigator (I2ead9).A navegação não fornece mais uma
ConcurrentModificationExceptionao usar a manipulação da lista deOnDestinationChangedListenerscom um callbackonDestinationChanged(Ib1707, b/188860458).O Safe Args não apresenta mais falhas ao tentar gerar propriedades de direção no Kotlin (Id2416, b/188564435).
O método setId em NavDestination agora está devidamente anotado com
@IdRes, então ele aceita apenas IDs de recursos (I69b80).O parâmetro int de
findNodeagora éresIdem vez deresid(I7711d).
Atualização de dependências
- O Safe Args agora depende do Plug-in do Android para Gradle 4.2.0. Isso significa que você não vai receber mais o aviso sobre o uso do
applicationIdTextResource(I6d67b, b/172824579).
Versão 2.4.0-alpha01
18 de maio de 2021
Lançamento de androidx.navigation:navigation-*:2.4.0-alpha01. A versão 2.4.0-alpha01 contém estas confirmações.
Novos recursos
- O método
currentBackStackEntryAsFlow()noNavControllerfornece umFlowque é emitido sempre que aNavBackStackEntryatual muda. Esse fluxo pode ser usado como uma alternativa ao gerenciamento manual de umOnDestinationChangedListener(I19c4a, #89, b/163947280).
Várias backstacks
O NavController é responsável por gerenciar a backstack dos destinos, adicionando destinos a ela quando o método navigate() navega até eles e os removendo ao chamar popBackStack() ou acionar o botão "Voltar" do sistema. A classe NavOptions existente e a integração com entradas <action> no XML dos gráficos de navegação foram expandidas para oferecer suporte ao salvamento e à restauração da backstack (b/80029773).
Como parte dessa mudança, os métodos NavigationUI de onNavDestinationSelected(), BottomNavigationView.setupWithNavController() e NavigationView.setupWithNavController() agora salvam e restauram automaticamente o estado dos destinos removidos, permitindo o suporte a várias backstacks sem mudanças no código. Ao usar a navegação com fragmentos, essa é a forma recomendada para integrar várias backstacks (Ie07ca).
As APIs de base para salvar e restaurar o estado são expostas por várias superfícies:
No XML de navegação, o elemento
<action>agora pode usar os atributos booleanos deapp:popUpToSaveStateeapp:restoreStatepara salvar o estado de quaisquer destinos removidos usandoapp:popUpToe restaurar o estado associado ao destino transmitido como oapp: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” />Nas
navOptionsda DSL do Kotlin, é possível adicionar as propriedades booleanasrestoreStateesaveStateno builderpopUpTo:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }Ao criar manualmente um objeto
NavOptionsusando oNavOptions.Builder, é possível usarsetRestoreState()e a nova sobrecarga parasetPopUpTo()que recebe um parâmetrosaveStateextra.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);As chamadas programáticas para
popBackStack()agora podem incluir um parâmetrosaveStateextra.
Em todos os casos, o NavController salva e restaura o estado de cada NavBackStackEntry, incluindo qualquer instância de destino ViewModel com escopo. As APIs Navigator foram atualizadas para permitir que cada Navigator aceite o salvamento e a restauração do próprio estado.
O ComposeNavigator usado para destinos composable no Navigation Compose e os FragmentNavigator e DynamicFragmentNavigator usados para destinos <fragment> no Navigation com fragmentos foram atualizados para usar as novas APIs Navigator e oferecer suporte ao salvamento e à restauração do estado.
Rotas de navegação
Uma rota é uma String que identifica um destino exclusivamente. Embora fosse usado anteriormente apenas no Navigation Compose, esse conceito passou a ser parte das principais APIs Navigation. Isso fornece uma alternativa ao uso de IDs de números inteiros ao criar seu gráfico usando a DSL de navegação do Kotlin (b/172823546).
Todas as APIs que recebiam apenas um ID agora têm uma sobrecarga que usa uma String de rota. Isso inclui navigate(), popBackStack(), popUpTo() e getBackStackEntry().
Isso teve algumas implicações na API:
- A propriedade
popUpTona DSL do Kotlin foi descontinuada e substituída porpopUpToId(I59c73, b/172823546). - A API
getStartDestination()foi descontinuada e substituída porgetStartDestinationId()(I0887f, b/172823546).
Para desenvolvedores que fizeram upgrade de versões anteriores do Navigation Compose para o Navigation Compose 2.4.0-alpha01, isso significa que as importações de métodos de extensão a seguir não são mais necessárias e precisam ser removidas:
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
O argumento KEY_ROUTE foi substituído pela propriedade route em NavDestination, permitindo que você chame navBackStackEntry.destination.route diretamente.
Mudanças na API
- Todos os artefatos de navegação foram reescritos em Kotlin. Isso melhorou a nulidade de classes usando a generalização (como subclasses
NavType). Todas as funções de extensão do Kotlin que costumavam fazer parte dos artefatos-ktxforam movidas para os respectivos artefatos principais. Os artefatos-ktxvão continuar sendo publicados, mas estão completamente vazios (b/184292145). - Agora, o
NavDeepLinkBuilderé compatível com a adição de vários destinos distintos à backstack gerada (I3ee0d, b/147913689). - Funções de fábrica para
DynamicNavHostFragmentforam adicionadas (Icd515, b/175222619). - O ID exclusivo de uma
NavBackStackEntryagora é exposto como parte da API pública dela (Ie033a). - Os campos
nameeargumente as funções de desestruturação deNamedNavArgumentagora são públicos (#174 (link em inglês), b/181320559). - Uma nova extensão
NavBackStackEntry#provideToCompositionLocalsque fornece oNavBackStackEntrypara os locais de composição relevantes foi adicionada (#175 (link em inglês), b/187229439).
Safe Args
O Safe Args agora gera um método
fromSavedStateHandle()para cada classeNavArgs(#122 (link em inglês), 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) }O Safe Args foi atualizado para usar o KotlinPoet
1.8.0(#172 (link em inglês), b/183990444).
Mudanças de comportamento
- O Navigation agora depende do
Lifecycle
2.3.1e marcasetGraph(),popBackStack(),navigateUp()enavigate()como os métodos que atualizam oLifecycledaNavBackStackEntry, como@MainThread, alinhando o componente de navegação à aplicação da linha de execução principal introduzida no Lifecycle2.3.0(b/171125856). - A análise de argumentos de enumeração de links diretos agora é indiferente a maiúsculas. Isso permite que um link direto, como
http://www.example.com/red, corresponda a um link diretowww.example.com/{color}mesmo quando a enumeração tiver o valorRED(#152 (link em inglês), b/135857840).
Compatibilidade do Compose
androidx.navigation:navigation-compose:2.4.0-alpha01só é compatível com a versão1.0.0-beta07do Compose e mais recentes.
Correções de bugs
- Correção de um problema em que marcadores de argumentos à direita tinham prioridade sobre links diretos que tinham um sufixo exato correspondente (#153 (link em inglês), b/184072811).
NavHostFragmentagora oferece suporte a navegadores personalizados que usam o mesmo@Navigator.Name("dialog")doDialogFragmentNavigatorpadrão (Ib1c2c, b/175979140).- Melhoria no comportamento de
NavigatorProvider#addNavigatorpara garantir que chamá-lo repetidamente com a mesma instância não cause problemas (#176 (link em inglês), b/187443146).
Contribuições externas
- Agradecemos a simonschiller (em inglês) pela criação do suporte ao Safe Args, gerando um método
fromSavedStateHandle()para cada classeNavArgs(#122 (link em inglês), b/136967621). - Agradecemos a Bradleycorn (em inglês) por tornar a análise de argumentos de tipo enumerado de links diretos indiferente a maiúsculas (#152 (link em inglês), b/135857840).
- Agradecemos a osipxd (link em inglês) por corrigir um problema em que os marcadores de argumentos à direita tinham precedência sobre links diretos com um sufixo exato correspondente (#153 (link em inglês), b/184072811).
- Agradecemos a tatocaster (link em inglês) por atualizar o Safe Args para depender do KotlinPoet
1.8.0(#172 (link em inglês), b/183990444). - Agradecemos a jossiwolf (em inglês) por tornar os campos
nameeargumente as funções de desestruturação doNamedNavArgumentpúblicos (#174 (link em inglês), b/181320559). - Agradecemos a jossiwolf (link em inglês) por apresentar uma nova extensão
NavBackStackEntry#provideToCompositionLocalsque fornece aNavBackStackEntryaos locais de composição relevantes (#175 (link em inglês), b/187229439). - Agradecemos a jossiwolf (em inglês) por melhorar o comportamento do
NavigatorProvider#addNavigator, garantindo que chamá-lo repetidamente com a mesma instância não cause problemas (#176 (link em inglês), b/187443146).
Navigation Compose versão 1.0.0
Versão 1.0.0-alpha10
7 de abril de 2021
Lançamento de androidx.navigation:navigation-compose:1.0.0-alpha10. A versão 1.0.0-alpha10 contém estas confirmações.
Mudanças na API
NavHostagora aceita umModifier, que é transmitido para o contêiner combinável que encapsula os elementos combináveis de destino (I85aca, b/175125483).
Correções de bugs
NavHostagora funciona mesmo quando umOnBackPressedDispatcherOwnernão é encontrado, por exemplo, ao visualizar oNavHost(I7d8b4).- O Navigation Compose agora depende do Navigation
2.3.5, corrigindo um problema ao usarBackHandlerdentro de um destinoNavHost(I7e63b, b/182284739).
Versão 1.0.0-alpha09
10 de Março de 2021
Lançamento de androidx.navigation:navigation-compose:1.0.0-alpha09. A versão 1.0.0-alpha09 contém estas confirmações.
Mudanças na API
LocalViewModelStoreOwner.currentagora retorna umViewModelStoreOwneranulável para determinar melhor se umViewModelStoreOwnerestá disponível na composição atual. As APIs que exigem umViewModelStoreOwner, comoviewModel()eNavHost, ainda geram uma exceção se umViewModelStoreOwnernão está definido (Idf39a).
Correções de bugs
- O Navigation Compose agora depende do Navigation 2.3.4, que inclui a correção para tentar definir o mesmo objeto do ViewModelStore depois que o gráfico foi definido (I65c24, b/177825470).
Versão 1.0.0-alpha08
24 de fevereiro de 2021
Lançamento do androidx.navigation:navigation-compose:1.0.0-alpha08. A versão 1.0.0-alpha08 contém estas confirmações.
Novos recursos
NavHostagora preenche o CompositionLocal doLocalSavedStateRegistryOwnercom aNavBackStackEntrydesse destino, garantindo que todos os estados salvos diretamente noSavedStateRegistryserão salvos e restaurados com o destino (I435d7, b/179469431).
Versão 1.0.0-alpha07
10 de fevereiro de 2021
Lançamento de androidx.navigation:navigation-compose:1.0.0-alpha07. A versão 1.0.0-alpha07 contém estas confirmações.
Atualizações de dependência
- O Navigation Compose depende do Lifecycle ViewModel Compose 1.0.0-alpha01 para oferecer compatibilidade com
viewModel()a destinoscomposable(I7a374). NavHostagora usa o novoLocalOnBackPressedDispatcherOwnerdo Activity-Compose 1.3.0-alpha01 para acessar oOnBackPressedDispatcherdefinido noNavController(I65b12).
Versão 1.0.0-alpha06
28 de janeiro de 2021
Lançamento de androidx.navigation:navigation-compose:1.0.0-alpha06. A versão 1.0.0-alpha06 contém estas confirmações.
Mudanças na API
- Adição de um método de extensão
getBackStackEntry(route: String)emNavControllerque retorna aNavBackStackEntryassociada (If8931).
Versão 1.0.0-alpha05
13 de janeiro de 2021
Lançamento de androidx.navigation:navigation-compose:1.0.0-alpha05. A versão 1.0.0-alpha05 contém estas confirmações.
Atualizada para depender do Compose 1.0.0-alpha10.
Versão 1.0.0-alpha04
16 de dezembro de 2020
Lançamento de androidx.navigation:navigation-compose:1.0.0-alpha04. A versão 1.0.0-alpha04 contém estas confirmações.
- Atualizada para compatibilidade com o Compose
1.0.0-alpha09.
Versão 1.0.0-alpha03
2 de dezembro de 2020
Lançamento de androidx.navigation:navigation-compose:1.0.0-alpha03. A versão 1.0.0-alpha03 contém estas confirmações.
Correções de bugs
- Correção de um problema em que
popBackStack()enavigateUp()não funcionavam após uma mudança de configuração ou da interrupção e recriação de um processo (Icea47, b/173281473). - A navegação até um gráfico aninhado no NavHost agora funciona corretamente (I0948d, b/173647694).
Versão 1.0.0-alpha02
11 de novembro de 2020
androidx.navigation:navigation-compose:1.0.0-alpha02 é lançado. A versão 1.0.0-alpha02 contém estas confirmações.
Mudanças na API
- O Navigation Compose agora oferece suporte ao NavOptions para uso de operações popUpTo e launchSingleTop (If96c3, b/171468994).
- Adição de uma função de navegação que usa uma rota em vez de um ID, permitindo construir gráficos aninhados na DSL do Navegation Compose (I1661d).
- startDestination agora vem antes da rota na lista de parâmetros para um NavHost (Ie620e).
- Agora, você pode criar um gráfico usando a rota como um destino inicial fora de um elemento combinável do NavHost (Iceb75).
Versão 1.0.0-alpha01
28 de outubro de 2020
android.navigation:navigation-compose:1.0.0-alpha01 é lançado. A versão 1.0.0-alpha01 contém estas confirmações.
Novos recursos
O artefato navigation-compose fornece integração entre o componente de navegação e o Jetpack Compose. Ele usa funções @Composable como destinos no aplicativo.
Esta versão inicial oferece:
- Um elemento
NavHostcombinável que permite construir seu gráfico de navegação por uma DSL do Kotlin. - Escopo do ciclo de vida,
ViewModel, e estado memorizado no nível de destino. - Integração automática com o botão "Voltar" do sistema.
- Suporte à transmissão de argumentos, anexação de links diretos para destinos e retorno de um resultado para destinos anteriores.
- Auxiliares específicos do Compose em
rememberNavController()ecurrentBackStackEntryAsState()para permitir a elevação do estado e conectarNavControllera elementos combináveis fora doNavHost, como uma barra de navegação inferior.
Consulte o guia de navegação do Compose para ver mais informações.
Versão 2.3.5
Versão 2.3.5
7 de abril de 2021
Lançamento de androidx.navigation:navigation-*:2.3.5. A versão 2.3.5 contém estas confirmações.
Novos recursos
- Ao navegar usando um
NavDeepLinkRequestouUri, agora é possível acessar oUri, a ação e o tipo MIME no destino resultante, conseguindo a intent dos argumentos pelaKEY_DEEP_LINK_INTENT, espelhando a funcionalidade já disponível para links diretos externos (I975c3, b/181521877).
Correções de bugs
OnBackPressedCallbacksfoi adicionado a um agente com aNavBackStackEntryagora que o LifecycleOwner intercepta pressionamentos para voltar de forma correta após o ciclo de vida da atividade serSTOPPEDe depoisSTARTED(Iff94f, b/182284739).- Agora, a análise de domínio de link direto não diferencia maiúsculas de minúsculas, garantindo que
www.example.comcorresponda awww.example.comewww.Example.com. Os nomes dos parâmetros de consulta ainda diferenciam maiúsculas de minúsculas (#144, b/153829033). - Correção de uma
NullPointerExceptionque podia ocorrer quando um destino tem vários argumentos padrão não anuláveis e você navega até esse destino modificando apenas um subconjunto desses argumentos (aosp/1644827).
Atualizações de dependência
- O plug-in do Gradle do Navigation Safe Args agora depende do plug-in do Gradle do Kotlin 1.4.31 (aosp/1661058, b/181156413).
Contribuição externa
- Agradecemos a
bentrengrove(em inglês) pela solicitação de envio que tornou a análise de domínios de link direto indiferente a maiúsculas (#144, b/153829033).
Versão 2.3.4
Versão 2.3.4
10 de Março de 2021
Lançamento de androidx.navigation:navigation-*:2.3.4. A versão 2.3.4 contém estas confirmações.
Novos recursos
- Os argumentos
ReferenceTypeagora podem ser analisados corretamente quando enviados como parte de um URI de link direto. Eles oferecem suporte ao valor inteiro bruto e aos valores hexadecimais prefixados por0x(#127 em inglês, b/179166693). - O
android:defaultValuepara um argumento comapp:argType="float"agora oferece suporte a valores padrão inteiros, permitindo que você useandroid:defaultValue="0"em vez de exigir o uso de0.0(#117 em inglês, b/173766247).
Correções de bugs
- Foi corrigido o travamento do progresso de instalação ao usar a compatibilidade do Navigation para recursos dinâmicos (Ib27a7, b/169636207).
- Chamar
setViewModelStoreousetLifecycleOwnercom o mesmo objeto que já foi definido resulta em um ambiente autônomo (Idf491, b/177825470). - O Safe-Args agora adiciona anotações de supressão nos métodos adequados ao usar Java (I8fbc5, b/179463137).
Contribuições externas
- Agradecemos a
JvmName(link em inglês) pela solicitação de envio para garantir que os argumentosReferenceTypeagora possam ser analisados corretamente quando enviados como parte de um URI de link direto (#127 em inglês, b/179166693). - Agradecemos a
tatocaster(em inglês) pela solicitação de envio para permitir o suporte a valores padrão para odefaultValuede um argumento comapp:argType=”float”(#117 em inglês, b/173766247).
Versão 2.3.3
Versão 2.3.3
27 de janeiro de 2021
Lançamento de androidx.navigation:navigation-*:2.3.3. A versão 2.3.3 contém estas confirmações.
Correções de bugs
- Não há mais uma falha ao exibir uma
NavBackStackEntryantes que oLifecycledela seja mudado paraCREATED(Ie3ba3). - Correção da regressão causada por b/171364502, em que a navegação para uma
atividade com um valor de recurso de animação de
0causava umaResourceNotFoundException(I7aedb, b/176819931).
Versão 2.3.2
Versão 2.3.2
2 de dezembro de 2020
Lançamento de androidx.navigation:navigation-*:2.3.2. A versão 2.3.2 contém estas confirmações.
Correções de bugs
- Correção de uma regressão na
NavigationUI, em que o uso de um destino<activity>comonNavDestinationSelectedfalhava ao navegar para a Activity (I22e34, b/171364502). - Correção de um problema em que o
navigation-dynamic-features-fragmentresultava na navegação para o destino recém-instalado várias vezes (aosp/1486056, b/169636207). - Correção de um problema em que os argumentos padrão não eram enviados para instâncias de
OnDestinationChangedListenerao usarlaunchSingleTop(I2c5cb). - Correção de um problema em que a navegação para um gráfico de navegação aninhado não criava uma nova instância de gráfico na pilha de retorno (Ifc831).
- Correção de um problema em que o uso de
navigate()com umpopUpToque removia o último destino em um gráfico de navegação não destruiria nem removeria imediatamente o gráfico de navegação da backstack (I910a3). - O SafeArgs do Navigation agora usa o KotlinPoet versão 1.7.2, que adiciona suporte ao modo explícito de API do Kotlin (I918b5).
- O
NavHostFragment.findNavController(Fragment)agora também verifica a visualização de decoração raiz de um DialogFragment, além das verificações existentes da hierarquia do Fragment e da hierarquia de visualização do Fragment. Isso permite que você teste fragmentos de caixas de diálogo que usam o Navigation comFragmentScenarioeNavigation.setViewNavController()(I69e0d).
Versão 2.3.1
Versão 2.3.1
14 de outubro de 2020
androidx.navigation:navigation-*:2.3.1 é lançado. A versão 2.3.1 contém estas confirmações.
Novos recursos
- Recursos padrão do Animator foram adicionados à IU do Navigation e são recomendados no lugar dos recursos de animação padrão (b/167430145).
- Agora, NavOptions substitui o hashcode e os métodos equals (b/161586466).
- Agora, o Navigation inclui o destino atual na IllegalArgumentException "Não há destinos com o ID", o que deve melhorar a experiência de depuração do desenvolvedor (b/168311416).
Correções de bugs
- O Safe Args não une mais a linha de retorno, mesmo se o nome da classe do argumento gerado tiver mais de 100 caracteres (b/168584987).
Mudanças na dependência
navigation-uiagora depende do DrawerLayout 1.1.1, garantindo que aNavigationUIé capaz de abrir a gaveta mesmo quando usarLOCK_MODE_LOCKED_CLOSEDouLOCK_MODE_LOCKED_OPEN(b/162253907).- O Safe Args agora depende do KotlinPoet 1.6.0. (aosp/1435911).
- O Safe Args agora depende do AGP 4.0.1 (aosp/1442337).
Versão 2.3.0
Versão 2.3.0
24 de junho de 2020
androidx.navigation:navigation-*:2.3.0 é lançado. A versão 2.3.0 contém estas confirmações.
Principais mudanças desde a versão 2.2.0
- Integração do módulo de recursos: os artefatos
navigation-dynamic-features-runtimeenavigation-dynamic-features-fragmentpermitem navegar para destinos definidos em módulos de recursos, gerenciando automaticamente a instalação conforme necessário. Consulte Navegar com módulos de recursos para ver mais informações. - Testes de navegação: o artefato
navigation-testingfornece umTestNavHostControllerque permite definir o destino atual e verificar o backstack após as operações de navegação. Consulte Testar a navegação para ver mais informações. - Retornar um resultado: o
NavBackStackEntryassociado a cada destino no backstack do Navigation agora permite que você acesse umSavedStateHandleadequado para armazenar pequenas quantidades de estado salvo que precisa ser associado a uma entrada específica do backstack. Consulte Retornar um resultado ao destino anterior para ver mais informações. - Suporte de
NavigationUIaOpenable: todos os usos deDrawerLayoutemNavigationUIforam substituídos pela interfaceOpenablemais genérica adicionada em CustomView1.1.0e implementada porDrawerLayoutem DrawerLayout1.1.0. - Suporte à ação e ao Tipo MIME em links diretos: houve a expansão dos links diretos para oferecer suporte a
app:actioneapp:mimeType, além doapp:uridisponível anteriormente.NavControlleragora oferece suporte à navegação por qualquer combinação desses campos graças à nova classeNavDeepLinkRequest. Consulte Navegar usando NavDgleLinkRequest para ver mais informações.
Problemas conhecidos
- O suporte a ações de link direto e tipos MIME ainda não está disponível no Manifest Merger. Até que esse trabalho seja concluído, os elementos
<intent-filter>gerados a partir do elemento<nav-graph>no manifesto não vão incluir o tipo MIME no elemento<data>ou na sua<action>personalizada. Adicione manualmente ao manifesto um<intent-filter>apropriado.
Versão 2.3.0-rc01
10 de junho de 2020
androidx.navigation:navigation-*:2.3.0-rc01 é lançado. A versão 2.3.0-rc01 contém estas confirmações.
Correções de bugs
- Foi corrigido um
NullPointerExceptionao substituir uma instância de um destino sem argumentos por outra instância com argumentos comsingleTop(b/158006669). - Todas as exceções
destination is unknowngeradas porNavControlleragora têm mais informações de depuração para ajudar a determinar o estado doNavController(b/157764916)
Versão 2.3.0-beta01
20 de maio de 2020
Lançamento de androidx.navigation:navigation-*:2.3.0-beta01. A versão 2.3.0-beta01 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que o
LifecycledoNavBackStackEntrynão era atualizado corretamente após a interrupção do processo (b/155218371). - As instâncias
OnDestinationChangedListenerregistradas antes de chamarsetGraph()agora recebem o destino restaurado corretamente após a interrupção do processo (b/155218371). - Ao usar
singleTop, oNavBackStackEntryagora tem os argumentos atualizados corretamente e enviados para todas as instâncias deOnDestinationChangeListener(b/156545508).
Atualizações de dependência
- O artefato
NavigationUIagora depende de CustomView1.1.0-rc01e DrawerLayout1.1.0-rc01(aosp/1309696).
Versão 2.3.0-alpha06
29 de abril de 2020
androidx.navigation:navigation-*:2.3.0-alpha06 é lançado. A versão 2.3.0-alpha06 contém estas confirmações.
Novos recursos
- Os links diretos foram expandidos para serem compatíveis com
app:actioneapp:mimeType, além doapp:uridisponível anteriormente. O NavController agora oferece suporte a navegação por qualquer combinação desses campos pela nova classeNavDeepLinkRequest(b/136573074, b/135334841).
Mudanças na API
- Ampliamos o suporte a DSL do Kotlin para destinos Dynamic Navigation (b/148969800)
Correções de bugs
- Foi corrigido um problema em que as intents de link direto eram ignoradas ao usar um destino inicial aninhado (b/154532067).
Versão 2.3.0-alpha05
15 de abril de 2020
androidx.navigation:navigation-*:2.3.0-alpha05 é lançado. A versão 2.3.0-alpha05 contém estas confirmações.
Novos recursos
- Para gráficos dinâmicos incluídos usando
<include-dynamic>, você não precisa mais especificarapp:graphPackage, e um padrão vai ser usado adicionando o sufixomoduleNameaoapplicationIdapós um ponto. Se você precisa personalizar seugraphPackage, agora há suporte a um marcador${applicationId}(b/152696768). - Agora, a DSL Kotlin de Navigation Graph expõe um
MapdefaultArgumentspara ações, espelhando a capacidade de definir valores padrão em elementos<action>em arquivos XML de Navigation (b/150345605, link em inglês)
Correções de bugs
- No Navigation 2.2.2: correção de uma
IllegalStateExceptionquando há links diretos para o destino inicial do seu gráfico com várias instânciasNavHostFragmentna sua Activity (b/147378752, link em inglês)
Atualizações de dependência
- O Navigation agora depende do Fragment
1.2.4(aosp/1277325). - Dynamic Navigation agora depende do Play Core
1.7.2(aosp/1282257).
Versão 2.3.0-alpha04
18 de março de 2020
androidx.navigation:navigation-*:2.3.0-alpha04 é lançado. A versão 2.3.0-alpha04 contém estas confirmações.
Novos recursos
- Foi adicionado suporte a atividades de módulo de recursos e destinos de fragmento na DSL Kotlin de navegação (b/148969800)
Mudanças na API
- Agora, a classe
DynamicExtrasnão usa mais um padrão de construtor e pode ser construída diretamente (aosp/1253671). DynamicActivityNavigatoragora usa umContextno construtor em vez de umaActivity(aosp/1250252).
Correções de bugs
NavigationUInão ignora mais rótulos vazios (ou seja, um destino comandroid:label=””) e agora define corretamente o título como uma string vazia (b/148679860).
Atualizações de dependência
- Os artefatos Navigation Dynamic Features agora dependem do Play Core
1.6.5(b/149556401).
Versão 2.3.0-alpha03
4 de março de 2020
androidx.navigation:navigation-*:2.3.0-alpha03 é lançado. A versão 2.3.0-alpha03 contém estas confirmações.
Mudanças na API
- Em vez de confiar na classe concreta
DrawerLayout,AppBarConfigurationagora usa a interfaceOpenableintroduzida em CustomView1.1.0-alpha02, queDrawerLayoutimplementa usando o DrawerLayout1.1.0-alpha04, permitindo que você use implementações personalizadas deOpenablecomNavigationUI(b/129030452).
Correções de bugs
- As regras
navigation-common-ktxdo ProGuard agora mantêm corretamente apenas as classesNavArgsque são usadas, em vez de todas as instânciasNavArgs(b/150213558).
Mudanças na dependência
- O Navigation reverteu a dependência no Core
1.2.0e agora depende do Core1.1.0para evitar forçar que os desenvolvedores migrem para uma dependência mais recente quando o Navigation não depender de novas APIs no Core1.2.0.
Versão 2.3.0-alpha02
19 de fevereiro de 2020
androidx.navigation:navigation-*:2.3.0-alpha02 é lançado. A versão 2.3.0-alpha02 contém estas confirmações.
Novos recursos
NavBackStackEntryagora permite que você acesse umSavedStateHandleadequado para armazenar pequenas quantidades de estados salvos que precisam ser associados a uma entrada de pilha de retorno específica. Consulte Como retornar um resultado para ver um exemplo de caso de uso. (b/79672220).
Mudanças na API
- Os métodos de conveniência de
getCurrentBackStackEntry()egetPreviousBackStackEntry()foram adicionados para facilitar a recuperação de umNavBackStackEntrypara os destinos atuais e anteriores (b/79672220).
Correções de bugs
navigateUp()agora transmite os argumentos do destino atual eKEY_DEEP_LINK_INTENTpara o destino anterior ao iniciar o app na sua pilha de tarefas (b/147456890).
Mudanças na dependência
- O Navigation agora depende do Core
1.2.0.
Versão 2.3.0-alpha01
5 de fevereiro de 2020
androidx.navigation:navigation-*:2.3.0-alpha01 é lançado. A versão 2.3.0-alpha01 contém estas confirmações.
Novos recursos
- O novo artefato
navigation-testingfornece uma classeTestNavHostController. Essa classe oferece uma alternativa ao uso de umNavControllersimulado ao testar o Navigation, o que permite definir o destino atual e verificar a backstack após as operações de navegação (b/140884273). - O novo
navigation-dynamic-features-fragment(e a dependência transitiva dele,navigation-dynamic-features-runtime) permite que você inclua destinos ou gráficos de navegação inteiros (via<include-dynamic>) de módulos de recursos, oferecendo uma instalação simples de módulos de recursos on demand ao navegar para esses destinos. Consulte Navegar com módulos de recursos para ver mais informações. (b/132170186)
Correções de bugs
- No Navigation
2.2.1: links diretos sem parâmetros de consulta agora ignoram corretamente todos os parâmetros de consulta em vez de os anexar a elementos{argument}no início ou no fim ou a elementos sem correspondência com o link direto (b/147447512). - No Navigation
2.2.1: as regras do ProGuardnavigation-uiparaDrawerArrowDrawableforam atualizadas para garantir queandroid.enableJetifier=truenão seja obrigatório (b/147610424). - No Navigation
2.2.1: o módulonavigation-common-ktxagora tem um nome de pacote de manifesto exclusivo em vez do mesmo nome de pacote de manifesto quenavigation-runtime-ktx(aosp/1141947).
Atualizações de dependência
- No Navigation
2.2.1: a navegação2.2.1agora depende do Lifecycle ViewModel SavedState2.2.0e do Fragment1.2.1.
Versão 2.2.2
Versão 2.2.2
15 de abril de 2020
Lançamento de androidx.navigation:navigation-*:2.2.2. A versão 2.2.2 contém estas confirmações.
Correções de bugs
- Correção de
IllegalStateExceptionquando há links diretos para o destino inicial do seu gráfico com várias instânciasNavHostFragmentna sua Activity (b/147378752). NavigationUInão ignora mais rótulos vazios (ou seja, um destino comandroid:label=””) e agora define corretamente o título como uma string vazia Isso foi lançado anteriormente no Navigation 2.3.0-alpha04 (b/148679860).- As regras
navigation-common-ktxdo ProGuard agora mantêm corretamente apenas as classesNavArgsque são usadas, em vez de todas as instânciasNavArgs. Isso foi lançado anteriormente no Navigation 2.3.0-alpha03 (b/150213558, link em inglês)
Atualizações de dependência
- O Navigation agora depende do Fragment
1.2.4(aosp/1277325).
Versão 2.2.1
Versão 2.2.1
5 de fevereiro de 2020
androidx.navigation:navigation-*:2.2.1 é lançado. A versão 2.2.1 contém estas confirmações.
Correções de bugs
- Agora, os links diretos sem parâmetros de consulta ignoram corretamente todos os parâmetros de consulta em vez de os anexar a elementos
{argument}no início ou no fim ou elementos sem correspondência com o link direto (b/147447512). - As regras do ProGuard
navigation-uiparaDrawerArrowDrawableforam atualizadas para garantir que o uso deandroid.enableJetifier=truenão seja obrigatório (b/147610424). - O módulo
navigation-common-ktxagora tem um nome de pacote de manifesto exclusivo em vez de compartilhar o mesmo nome de pacote de manifesto quenavigation-runtime-ktx(aosp/1141947).
Atualizações de dependência
- O Navigation
2.2.1agora depende do Lifecycle ViewModel SavedState2.2.0e do Fragment1.2.1.
Versão 2.2.0
Versão 2.2.0
22 de janeiro de 2020
androidx.navigation:navigation-*:2.2.0 é lançado. A versão 2.2.0 contém estas confirmações.
Mudanças importantes desde a versão 2.1.0
- NavBackStackEntry: agora você pode chamar
NavController.getBackStackEntry(), passando o ID de um destino ou gráfico de navegação na pilha de retorno. ONavBackStackEntryretornado fornece umLifecycleOwneracionado pela navegação,ViewModelStoreOwner(o mesmo retornado porNavController.getViewModelStoreOwner()) eSavedStateRegistryOwner, além de fornecer os argumentos usados para iniciar o destino. - Integração do Lifecycle ViewModel SavedState:
SavedStateViewModelFactoryagora é a fábrica padrão empregada ao usarby navGraphViewModels()ou o construtorViewModelProvidercom umViewModelStoreOwnerretornado porNavController.getBackStackEntry()ouNavController.getViewModelStoreOwner(). - Suporte a links diretos com parâmetros de consulta: links diretos com parâmetros de consulta agora oferecem suporte aos parâmetros de consulta reordenados. Argumentos que têm um valor padrão ou são anuláveis agora são opcionais na correspondência de links diretos.
- Melhoria no suporte a animação:
NavHostFragmentagora usaFragmentContainerViewdo Fragment 1.2.0, corrigindo problemas relacionados à ordem z de animações e a inserções de janelas enviadas para o Android Fragments.
Versão 2.2.0-rc04
18 de dezembro de 2019
androidx.navigation:navigation-*:2.2.0-rc04 é lançado. A versão 2.2.0-rc04 contém estas confirmações.
Correções de bugs
- Ajuste das animações de esmaecimento padrão usadas por
navigation-uipara corresponder às animações de esmaecimento ajustadas no Fragment1.2.0-rc04(b/145769814).
Versão 2.2.0-rc03
4 de dezembro de 2019
androidx.navigation:navigation-*:2.2.0-rc03 é lançado. A versão 2.2.0-rc03 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema na análise de links diretos ao usar parâmetros de consulta e um argumento como a última parte do caminho, o que impedia que mais de um caractere do argumento de caminho final fosse analisado (b/144554689).
- Correção de um problema na análise de links diretos em que parâmetros opcionais recebem
"@null"em vez denull(b/141613546). NavHostFragmentagora restaura corretamente o gráfico após uma mudança de configuração quando usado comFragmentContainerView(b/143752103).
Mudanças na dependência
- A navegação agora depende do Lifecycle
2.2.0-rc03, do Lifecycle ViewModel SavedState1.0.0-rc03, da Activity1.1.0-rc03e do Fragment1.2.0-rc03quando apropriado.
Versão 2.2.0-rc02
7 de novembro de 2019
androidx.navigation:navigation-*:2.2.0-rc02 é lançado. A versão 2.2.0-rc02 contém estas confirmações.
Mudanças na dependência
- A navegação agora depende do androidx.lifecycle
2.2.0-rc02.
Versão 2.2.0-rc01
23 de outubro de 2019
androidx.navigation:navigation-*:2.2.0-rc01 é lançado sem mudanças desde 2.2.0-beta01. A versão 2.2.0-rc01 contém estas confirmações.
Versão 2.2.0-beta01
9 de outubro de 2019
androidx.navigation:navigation-*:2.2.0-beta01 é lançado. A versão 2.2.0-beta01 contém estas confirmações.
Novos recursos
NavDestinatione as subclasses dele agora substituemtoString()para fornecer informações mais úteis durante a depuração (b/141264986).
Mudanças de comportamento
- Parâmetros de consulta extra agora são ignorados ao fazer a correspondência com links diretos, em vez de fazer com que a correspondência falhe (b/141482822).
Correções de bugs
- Correção de um problema em que os argumentos no caminho de um link direto seriam ignorados se os parâmetros de consulta também fossem especificados (b/141505755).
- A extensão Kotlin
navArgs()emActivityagora tem uma mensagem de erro melhor quando não há extras (b/141408999). - As classes Java
Directionsgeradas pelo Safe Args agora contêm valores padrão (b/141099045). - As classes Java
Argsgeradas pelo Safe Args agora contêm valores padrão (b/140123727). - Ao usar um
Toolbar,NavigationUInão anima mais a alteração do texto ao se mover entre dois destinos de nível superior (b/140848160).
Versão 2.2.0-alpha03
18 de setembro de 2019
androidx.navigation:navigation-*:2.2.0-alpha03 é lançado. A versão 2.2.0-alpha03 contém estas confirmações.
Mudanças de comportamento
- Chamar
setViewModelStore()depois de chamarsetGraphagora resulta em umIllegalStateException. Isso sempre tem que ser definido peloNavHostcomo parte da configuração inicial para garantir que todas as instâncias deNavBackStackEntrytenham um armazenamento consistente para instâncias deViewModel(aosp/1111821).
Correções de bugs
- Correção de uma
ConcurrentModificationExceptionao usar instâncias deViewModelanexadas a várias instâncias deViewModelStorecom escopo no gráfico de navegação (aosp/1112257).
Versão 2.2.0-alpha02
5 de setembro de 2019
Lançamento de androidx.navigation:navigation-*:2.2.0-alpha02. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- Agora, os links diretos com parâmetros de consulta são compatíveis com os parâmetros de consulta reordenados. Argumentos que têm um valor padrão ou são anuláveis agora são opcionais na correspondência de links diretos (b/133273839).
- Agora você pode chamar
NavController.getBackStackEntry(), passando o código de um destino ou gráfico de navegação na pilha de retorno. ANavBackStackEntryretornada fornece umLifecycleOwneracionado pelo Navigation,ViewModelStoreOwner(o mesmo retornado porNavController.getViewModelStoreOwner()) eSavedStateRegistryOwner, além de fornecer os argumentos usados para iniciar o destino (aosp/1101691, aosp/1101710)
Correções de bugs
- Correção de um problema no qual a adição de
NavHostFragmentaViewPager2falhou com umIllegalArgumentException(b/133640271). NavInflateragora evita chamargetResourceName()desnecessariamente, acelerando o tempo de inflação em até 40% (b/139213740).
Versão 2.2.0-alpha01
7 de agosto de 2019
androidx.navigation:navigation-*:2.2.0-alpha01 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
SavedStateViewModelFactoryagora é padrão de fábrica para o uso deby navGraphViewModels()ou do construtorViewModelProvidercom umViewModelStoreOwnerretornado porNavController.getViewModelStoreOwner()(b/135716331).
Mudanças na API
- No Navigation
2.1.0-rc01: a APIgetViewModelStore()descontinuada foi removida doNavControllerque foi introduzido na versão2.1.0-alpha02(aosp/1091021).
Correções de bugs
NavHostFragmentagora usaFragmentContainerView, corrigindo problemas relacionados à ordem z de animações e a inserções de janelas enviadas para o Android Fragments (b/137310379).
Versão 2.1.0
Versão 2.1.0
5 de setembro de 2019
Lançamento de androidx.navigation:navigation-*:2.1.0. As confirmações incluídas nessa versão podem ser encontradas neste link.
Mudanças importantes desde a versão 2.0.0
- Como usar o ViewModels no escopo de um gráfico de navegação: agora você pode criar ViewModels com escopo no nível do gráfico de navegação usando a propriedade
by navGraphViewModels()delegada para usuários de Kotlin usando as bibliotecas-ktxou a APIgetViewModelStoreOwner()adicionada aNavController. Consulte Compartilhar dados relacionados à IU entre os destinos para mais informações. - Destinos de caixa de diálogo: agora você pode criar destinos
<dialog>que vão mostrar umDialogFragmentquando vocênavigatepara eles.NavHostFragmentaceita destinos de caixas de diálogo por padrão. Consulte Criar um destino a partir de um DialogFragment para mais informações. - Navegação pelo URI: agora você pode
navigatecom umUri, que usa o<deepLink>adicionado a um destino para navegar por ele. Consulte Navegar usando o URI para mais informações. - NavHostController: APIs usadas especificamente para a construção de um
NavHostpersonalizado foram movidas paraNavHostController, permitindo que implementações conectassemNavControllerao hostLifecycleOwner,OnBackPressedDispatchereViewModelStore.
Versão 2.1.0-rc01
7 de agosto de 2019
androidx.navigation:navigation-*:2.1.0-rc01 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Mudanças na API
- A API
getViewModelStore()descontinuada noNavControllerque foi introduzida na versão2.1.0-alpha02foi removida (aosp/1091021).
Versão 2.1.0-beta02
19 de julho de 2019
androidx.navigation:*:2.1.0-beta02 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Correções de bugs
- Removida dependência não intencional do Jacoco, introduzida no
2.1.0-beta01(b/137782950).
Versão 2.1.0-beta01
17 de julho de 2019
androidx.navigation:*:2.1.0-beta01 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
NavigationUIagora anima a remoção do botão para cima ao usarsetupWithNavController()comToolbarouCollapsingToolbarLayout(b/131403621).
Correções de bugs
- Correção de um problema de tempo ao usar vários NavHostFragments com o mesmo contêiner com
findNavController()(b/136021571).
Versão 2.1.0-alpha06
2 de julho de 2019
Lançamento de androidx.navigation:*:2.1.0-alpha06. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- O atributo
app:navGraphusado por NavHostFragment agora foi movido para o artefatonavigation-runtime. Navegadores personalizados que podem ser adicionados via XML precisam usar esse atributo para ter integração com o painel "Host" do Navigation Editor (b/133880955).
Mudanças na API
- A API
getViewModelStore()noNavControllerfoi descontinuada e substituída pelo novo métodogetViewModelStoreOwner(), que retorna umViewModelStoreOwner(aosp/987010). - A implementação de destinos de janelas flutuantes, como destinos
<dialog>, foi generalizada em uma interface de marcador,FloatingWindow, que agora todos os destinos<dialog>implementam. Agora, os métodos NavigationUI para interação com a barra de apps superior ignoram os destinosFloatingWindow(b/133600763)
Mudanças de comportamento
- O Navigation agora mantém corretamente o estado sincronizado com o que é visto na tela ao usar um destino
<dialog>. Como consequência, o Navigation agora exibe automaticamente destinos<dialog>quando você navega para um destino que não tem caixas de diálogo ou atividades, como um destino<fragment>(b/134089818, link em inglês)
Correções de bugs
- O Navigation agora suprime a animação que ocorre ao recriar a atividade durante a manipulação de um link direto, corrigindo um flash visual (b/130362979).
- Corrigido um bug em que a backstack do Navigation ficava dessincronizada ao mostrar um novo fragmento enquanto o fragmento inicial estava sendo adicionado (b/133832218).
Versão 2.1.0-alpha05
5 de junho de 2019
androidx.navigation:*:2.1.0-alpha05 é lançado. As confirmações incluídas nessa versão podem ser encontradas neste link.
Mudanças na API
- As APIs relacionadas ao host em
NavControllerforam renomeadas e movidas para uma nova subclasse deNavController,NavHostController(aosp/966091). - O método
setHostOnBackPressedDispatcherOwner()doNavControllerfoi substituído pelo métodosetOnBackPressedDispatcher()doNavHostControllere agora exige que você chamesetLifecycleOwner()antes dele (aosp/965409). NavHostControlleragora contém um métodoenableOnBackPressed(boolean)que substitui a classeNavHostOnBackPressedManagerque foi retornada anteriormente porsetHostOnBackPressedDispatcherOwner()(aosp/966091).
Correções de bugs
- Correção de um problema em que a backstack ficava incorreta depois da navegação pelo URI (b/132509387).
- Os links diretos manipulados automaticamente pelo NavController agora são acionados apenas uma vez (b/132754763).
Versão 2.1.0-alpha04
16 de maio de 2019
androidx.navigation:*:2.1.0-alpha04 é lançado. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
Correções de bugs
NavHostFragmentrespeita corretamente oapp:defaultNavHostao interceptar os eventos do botão "Voltar" do sistema, corrigindo uma regressão no Navigation2.1.0-alpha03b/132077777.DialogFragmentNavigatoragora lida corretamente com as operaçõespopBackStack()enavigateUp()b/132576764.- Correção de um problema
IllegalStateException: unknown destination during restoreao navegar repetidamente entre gráficos aninhados (b/131733658).
Versão 2.1.0-alpha03
7 de maio de 2019
Lançamento de androidx.navigation:*:2.1.0-alpha03. As confirmações incluídas nessa versão podem ser encontradas neste link.
Problemas conhecidos
- NavHostFragment continua a interceptar o botão "Voltar" do sistema apesar de usar
app:defaultNavHost="false"(b/132077777).
Novos recursos
- Agora você pode criar destinos
<dialog>que mostrarão umDialogFragmentquando vocênavigatepara eles.NavHostFragmentaceita destinos de caixas de diálogo por padrão (b/80267254). - Agora, além de chamar
navigatecom um código de recurso ou uma instânciaNavDirections, você pode navegar com umUri, que usa o<deepLink>que você adicionou a um destino para navegar para o destino correto (b/110412864).
Mudanças de comportamento
- As animações padrão fornecidas pela NavigationUI foram aceleradas de 400 ms para 220 ms a fim de corresponder à velocidade de animação padrão de atividades e fragmentos (b/130055522).
Mudanças na API
- O uso do método
createFragmentNavigator()doNavHostFragmentfoi descontinuado, e a funcionalidade dele foi movida para o novo métodoonCreateNavController()para deixar mais claro que esse é o ponto de entrada correto para adicionar navegadores personalizados ao criar subclasses deNavHostFragmentb/122802849. - Um método
hasDeepLink()foi adicionado aNavDestinationpara permitir que você verifique se um determinadoUripode ser manipulado por esse destino ou, no caso de umNavGraph, por qualquer destino no gráfico de navegação (b/117437718).
Correções de bugs
- Os argumentos padrão agora são transmitidos corretamente para instâncias
OnDestinationChangedListener(b/130630686). NavHostFragmentagora intercepta os eventos do botão "Voltar" do sistema usandoOnBackPressedDispatcher. Isso corrige o problema que ocorria durante uma navegação condicional nos métodos de ciclo de vida do Fragment ao retornar para um Fragment (b/111598096).- Para o Safe Args, um
android:defaultValue=”@null”comapp:argTypenão especificado agora é inferido corretamente como um argumentostringb/129629192.
Versão 2.1.0-alpha02
3 de abril de 2019
Lançamento de androidx.navigation:*:2.1.0-alpha02. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- Agora você pode criar ViewModels com escopo no nível do gráfico de navegação usando a propriedade
by navGraphViewModels()delegada para usuários do Kotlin ou a APIgetViewModelStore()adicionada aNavControllerb/111614463.
Mudanças na API
- Agora você pode adicionar um
app:targetPackagea um destino<activity>para limitar o nome do pacote correspondente. Ele oferece suporte aapp:targetPackage="${applicationId}"para restringir o pacote ao ID do seu aplicativo (b/110975456).
Correções de bugs
- Os destinos
android:namepara<activity>não são mais analisados em uma classe durante a inflação, evitando ClassNotFoundExceptions ao usar recursos dinâmicos (b/124538597).
Versão 2.1.0-alpha01
19 de março de 2019
Esta é a primeira versão alfa do Navigation 2.1.0.
Mudanças na dependência
- O Navigation agora depende de
androidx.core:core:1.0.1eandroidx.fragment:fragment:1.1.0-alpha05. Esta versão também remove a dependência deandroidx.legacy:legacy-support-core-utils:1.0.0b/128632612.
Mudanças na API
- Um novo método
Navigation.createNavigateOnClickListener(NavDirections)foi adicionado como alternativa à criação de um listener de clique com um pacote e ID de recurso (b/127631752). - O
FragmentNavigator.instantiateFragmentfoi descontinuado. A implementação padrão agora usaFragmentFactorypara instanciar fragmentos (b/119054429).
Correções de bugs
- O Navigation não envia mais um
Bundlenulo quando há argumentos anexados a um destino, corrigindo um problema ao usarandroid:defaultValue="@null"b/128531879. - O Safe Args agora depende do KotlinPoet 1.1.0, o que corrige um problema com nomes de pacotes extremamente longos (b/123654948).
Versão 2.0.0
Versão 2.0.0
14 de março de 2019
Lançamento do Navigation 2.0.0 sem mudanças de 2.0.0-rc02.
Versão 2.0.0-rc02
6 de março de 2019
O Navigation 2.0.0-rc02 oferece novos artefatos com o ID do grupo androidx.navigation
e muda as dependências para os equivalentes do AndroidX.
O comportamento do 2.0.0-rc02 é idêntico ao do Navigation 1.0.0-rc02, e nenhuma mudança no código será necessária para atualizar a 1.0.0-rc02, além da atualização das suas dependências para corresponder às novas dependências.
Seu projeto precisa ter migrado para o AndroidX para usar as versões 2.X do Navigation. O Navigation 1.0 estável será a última versão que vai usar as dependências da Biblioteca de Suporte. Todo o desenvolvimento futuro além da versão 1.0 vai ser baseado no AndroidX e na versão estável 2.0.
Dependências anteriores ao AndroidX
Para as versões anteriores ao AndroidX do Navigation, inclua estas dependências:
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
}
Para Safe Args, adicione o
seguinte classpath ao arquivo build.gradle de nível superior:
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
Versão 1.0.0
Versão 1.0.0
14 de março de 2019
Lançamento do Navigation 1.0.0 sem mudanças de 1.0.0-rc02.
Versão 1.0.0-rc02
26 de fevereiro de 2019
Este é o segundo candidato a lançamento da versão estável do Navigation 1.0.0. Essa versão contém várias correções de bugs.
Correções de bugs
- Corrigido um problema em que
popBackStack()era ignorado se o gráfico raiz não tivesse um ID (b/126251695). navigateUp()agora gerencia corretamente a navegação de volta à tarefa do app quando é chamado depois de processar um link direto semFLAG_ACTIVITY_NEW_TASK(b/126082008).- Foi corrigido um problema com o
ActivityNavigator.applyPopAnimationsToPendingTransition, que não aplicava a animação correta de saída (b/126237567). - O código Kotlin gerado pelo Safe Args agora faz corretamente o escape das palavras-chave do Kotlin,
como
inefunno nome do pacote associado à classeR(b/126020455).
Versão 1.0.0-rc01
21 de fevereiro de 2019
Este é um candidato a lançamento da versão estável do Navigation 1.0.0. Essa versão contém uma correção de bug.
Correções de bugs
- Correção de um problema ao usar o Android Fragments e operações de navegação (
singleTopb/124294805).
Versão 1.0.0-beta02
12 de fevereiro de 2019
Esta versão inclui uma série de pequenas melhorias e correções de bugs importantes.
Novos recursos
- Agora você pode usar
0como umandroid:defaultValuepara argumentosreference(b/124248602).
Mudanças de comportamento
- As correspondências exatas dos links diretos agora são priorizadas em relação aos links diretos com
.*ou correspondências de argumentos (b/123969518).
Correções de bugs
popBackStack()enavigateUpagora retornam corretamentefalseao colocar o último destino na pilha de retorno, corrigindo uma regressão introduzida em1.0.0-beta01b/123933201.- O Navigation agora define corretamente o
ClassLoaderdurante a restauração do estado salvo da instância, evitando problemas ao usar classes personalizadas no estado salvo doNavigatorou em argumentos enviados a umNavDestinationb/123893858 - As classes NavArgs geradas pelo Safe Args não falham mais ao restaurar
um argumento
Parcelable[]do estado da instância salva b/123963545. - O Safe Args agora limpa corretamente as classes Kotlin geradas sem necessidade (b/124120883).
Versão 1.0.0-beta01
4 de fevereiro de 2019
Esta é a primeira versão beta do Navigation. Daqui em diante, espera-se que a API do Navigation permaneça estável até a próxima versão, a menos que haja um problema crítico. Essa versão contém algumas correções de bugs e mudanças de comportamento.
Mudanças de comportamento
- O Navigation agora garante que os valores padrão do argumento sejam tratados de forma idêntica
durante a execução e pelo Safe Args. Como consequência, somente argumentos com
app:argType="reference"podem ter um ponto de valor padrão para outro recurso (por exemplo,@color/colorPrimary). A tentativa de usar um valor padrão de referência com umapp:argTypediferente resultará em uma exceção ao analisar o XML de navegação b/123551990. - O Safe Args agora depende do Plug-in do Android para Gradle 3.3.0 (aosp/888413).
- O Safe Args agora depende do Kotlin 1.3.20 (aosp/888414).
Correções de bugs
- O Safe Args agora pode ser usado em módulos de biblioteca e de recursos em todas as versões do Plug-in do Android para Gradle (b/121304903).
- Foi corrigida uma regressão que fazia com que uma única operação
popBackStack()exibisse todas as cópias de um destino da parte de cima do backstack em vez de apenas um destino por vez (b/123552990). - Foi corrigido um problema em que o estado
FragmentNavigatorficava dessincronizado com o doNavController, causando umaIllegalStateExceptionao tentar restaurar o backstack (b/123803044). - Correção de um problema em que a seta para voltar gerenciada pela
NavigationUInão aparecia ao usar o ProGuard com ofuscação b/123449431. - O código gerado pelo Safe Args agora é processado corretamente com o uso de um
app:argTypeapontando para uma classe interna estática no formato.OuterClass$InnerClassb/123736741. - O código Java gerado pelo Safe Args agora processa corretamente ações globais e destinos profundamente aninhados (b/123347762).
Versão 1.0.0-alpha11
23 de janeiro de 2019
Esta é uma versão hotfix de 1.0.0-alpha10 que corrige um problema com o Safe Args.
Correções de bugs
- Correção de um problema em que o Safe Args falhava ao importar a classe Directions associada às ações globais (b/123307342).
Versão 1.0.0-alpha10
23 de janeiro de 2019
Problemas conhecidos
- O Safe Args falha ao importar a classe Directions associada às ações globais b/123307342.
Esta versão contém alterações interruptivas da API. Consulte a seção Alterações interruptivas abaixo.
Novos recursos
- Os usuários do Kotlin agora podem usar a delegação da propriedade
by navArgs()para receber lentamente uma referência a uma classeNavArgsgerada pelo Safe Args em umaActivityouFragmentb/122603367. - O Safe Args agora permite gerar o código Kotlin aplicando o
plug-in
androidx.navigation.safeargs.kotlin. O código Kotlin foi criado especificamente para módulos exclusivos do Kotlin, usando argumentos padrão e classes imutáveis sobre o padrão do builder, que ainda está disponível no plug-inandroidx.navigation.safeargs(b/110263087).
Mudanças de comportamento
- Os links diretos correspondentes agora são direcionados ao link direto que tem os argumentos com nível mais alto de correspondência (b/118393029).
- Agora, a ação de chamar
setGraph()em umNavControllervai redefinir a backstack (b/111450672). - Os links diretos desconhecidos não geram mais uma
IllegalStateException, mas são ignorados, corrigindo problemas comNavHostFragments aninhados ou múltiplos (b/121340440).
Alterações interruptivas
- O método
NavOptions.applyPopAnimationsToPendingTransition()para aplicar animações de destaque a uma atividade foi movido paraActivityNavigatorb/122413117. - O Safe Args agora evita duplicar classes idênticas para ações sem
argumentos. O tipo de retorno para métodos sem argumento nas classes NavDirections geradas é
NavDirectionsb/123233147 - As classes Directions geradas pelo Safe Args não têm mais um construtor público. Interaja somente com os métodos estáticos gerados b/123031660.
- As classes
NavDirectionsgeradas pelo Safe Args não têm mais um construtor público. Elas só podem ser geradas por um dos métodos estáticos nas classes Directions geradas (b/122963206). - O
Bundleretornado degetArguments()doNavDirectionsagora está marcado como@NonNull, em vez de@Nullable(b/123243957).
Correções de bugs
- Agora,
NavDeepLinkBuilderprocessa corretamente váriosPendingIntents simultâneos para o mesmo destino usando os argumentos que você transmite para determinar a exclusividade (b/120042732). - Agora,
NavControllerprocessa corretamente as operaçõespopBackStack()ao usar umNavHostFragmentaninhado ou outros fragmentos filhos com uma backstack (b/122770335). - Agora,
NavigationUIdefine corretamente a descrição do conteúdo do botão "Para cima" (b/120395362). - As classes Directions geradas pelo Safe Args agora processam corretamente ações globais que têm o mesmo ID que uma ação de um destino (b/122962504).
- As classes
NavDirectionsgeradas pelo Safe Args agora têm valoreshashCode()iguais corretos quandoequals()retorna "true" b/123043662. FragmentNavigatoragora gera uma mensagem de erro melhor se você tenta fazerFragmentTransactionspersonalizadas noFragmentManagerdoNavHostFragment. Sempre usegetChildFragmentManager(). b/112927148.
Versão 1.0.0-alpha09
18 de dezembro de 2018
Esta versão contém alterações interruptivas da API. Consulte a seção Alterações interruptivas abaixo.
Optamos por não continuar o desenvolvimento do
artefato android.arch.navigation:navigation-testing. Embora ele tenha se mostrado
útil nos testes internos do NavController, é altamente recomendável
usar estratégias de teste alternativas, como a simulação da instância NavController,
para verificar se as chamadas de navigate() corretas estão sendo feitas. Essa
abordagem é discutida em detalhes na
palestra Atividade Única na Conferência de Desenvolvedores Android 2018
(vídeo em inglês), e vamos providenciar outra documentação, especificamente com relação a testes
com Navigation.
Novos recursos
MenuItems commenuCategory="secondary"não vão mais ser exibidos na backstack quando usados com métodosNavigationUI(b/120104424).AppBarConfigurationagora permite que você defina uma instância substituta deOnNavigateUpListenerque é chamada quandonavController.navigateUp()retornafalseb/79993862 b/120690961.
Alterações interruptivas
- Ao usar um
<argument>com umargType="reference", o Navigation não vai mais analisar a referência, mas vai fornecer o próprio ID de recurso bruto (b/111736515). - Agora,
onNavDestinationSelected()retorna ao destino inicial do seu gráfico de navegação por padrão, tornando-o consistente com os métodossetup. AdicionemenuCategory="secondary"ao seuMenuItempara evitar a exibição da pilha de retorno (aosp/852869). - Os métodos
fromBundle()das classesArgsgeradas agora assumem um valorBundlenão nulo em vez de um valor anulável deBundle(aosp/845616).
Correções de bugs
- Agora, os argumentos são analisados corretamente nos links diretos como o
argTypecorreto, em vez de sempre como strings (b/110273284). - O Navigation agora exporta corretamente os próprios recursos públicos (b/121059552).
- O Safe Args agora oferece suporte ao Plug-in do Android para Gradle 3.4 Canary 4 e versões mais recentes (b/119662045).
Versão 1.0.0-alpha08
6 de dezembro de 2018
Esta versão contém alterações interruptivas da API. Consulte a seção Alterações interruptivas abaixo.
Novos recursos
- Os rótulos de destino, quando usados com os métodos
NavigationUI, vão substituir automaticamente as instâncias do{argName}no seuandroid:labelcom o argumento correto (b/80267266). - O Navigation agora depende da Biblioteca de Suporte 28.0.0 (b/120293333).
Alterações interruptivas
OnNavigatedListenerfoi renomeado comoOnDestinationChangedListener(b/118670572).OnDestinationChangedListeneragora também transmite oBundlede argumentos (aosp/837142).- Os atributos
app:clearTaskeapp:launchDocumente os métodos associados foram removidos. Useapp:popUpTocom a raiz do seu gráfico para remover todos os destinos da backstack (b/119628354). ActivityNavigator.Extrasagora usa um padrãoBuildere adiciona a capacidade de definir qualquer flagIntent.FLAG_ACTIVITY_(aosp/828140).NavController.onHandleDeepLinkfoi renomeado comohandleDeepLinkaosp/836063.- Muitas classes e métodos que não se destinam à subclassificação, como
NavOptions,NavInflater,NavDeepLinkBuildereAppBarConfiguration, se tornaramfinal(aosp/835681). - O método
NavHostFragment.setGraph()descontinuado foi removido (aosp/835684). - O método
NavigationUI.navigateUp(DrawerLayout, NavController)descontinuado foi removido (aosp/835684). - A criação de Fragment foi movida para
FragmentNavigator, facilitando a delegação da criação de Fragment para umFragmentFactory(b/119054429). - O construtor para
NavGraphNavigatornão usa mais umContextaosp/835340. - NavigatorProvider agora é
uma classe, em vez de uma interface. O
NavigatorProviderretornado porgetNavigatorProvider()não mudou a funcionalidade aosp/830660. - O
NavDestination.navigate()foi removido. Em vez disso, chamenavigate()noNavigator(aosp/830663). - Refatoração significativa do
Navigator, removendo a necessidade deOnNavigatorNavigatedListenere fazendo com quenavigateretorne oNavDestinationa que a navegação ocorreu. - As instâncias do
Navigatornão podem mais enviar eventos de pop para oNavController. Considere usar umOnBackPressedCallbackpara interceptar o pressionamento do botão "Voltar" e chamarnavController.popBackStack()(aosp/833716).
Correções de bugs
popUpToagora funciona consistentemente quando o destino é um elemento<navigation>(b/116831650).- Diversos bugs que resultavam em uma
IllegalArgumentExceptionao usar gráficos aninhados foram corrigidos (b/118713731, b/113611083, b/113346925, b/113305559). - O atributo
dataPatternde destinos<activity>agora preencherá argumentos de argumentos não String chamandotoString()b/120161365.
Safe Args
- Safe Args compatível com objetos Serializable, incluindo valores Enum. Tipos Enum
podem definir um valor padrão usando a enumeração literal sem o nome da classe,
por exemplo,
app:defaultValue="READ"(b/111316353). - O Safe Args funciona com matrizes de todos os tipos com suporte (b/111487504).
- O Safe Args agora ignora subpastas de diretórios de recursos (b/117893516).
- O Safe Args adiciona anotações
@Overridequando apropriado (b/117145301).
Versão 1.0.0-alpha07
29 de outubro de 2018
Novos recursos
- Uma nova classe AppBarConfiguration permite personalizar quais destinos são considerados destinos de nível superior. Consulte a documentação atualizada para ver mais detalhes (b/117333663).
- Agora você pode transferir argumentos para o destino inicial do seu gráfico (b/110300470).
- Os links diretos agora oferecem suporte a esquemas personalizados com pontos, hífens e sinais de adição (b/112806402).
Alterações interruptivas
- O módulo
navigation-testing-ktxfoi incorporado nonavigation-testing artifacte não vai mais ser publicado. - O artefato
navigation-testingagora depende da biblioteca padrão Kotlin. A API foi alterada para ser mais consistente com as convenções do Kotlin, mas você pode continuar a usá-la para testes escritos em Java. - Não há mais suporte a gráficos de navegação registrados com manifestos de metadados (b/118355937).
- As ações não podem mais ser anexadas a destinos de <activity> aosp/785539.
Correções de bugs
- Os links diretos agora analisam os parâmetros de consulta corretamente (b/110057514).
- Os destinos de atividade agora aplicam corretamente todas as animações de entrada e saída (b/117145284).
- Corrigidas falhas que ocorrem depois que a configuração é alterada ao usar Navigators personalizados (b/110763345).
Safe Args
- Safe Args agora tem uma dependência fixa no Android Gradle Plugin 3.2.1 (b/113167627).
- Diretivas agora podem ser geradas para classes internas (b/117407555).
- Correção de um problema ao gerar diretivas para um gráfico <include> (b/116542123).
Versão 1.0.0-alpha06
20 de setembro de 2018
Novos recursos
- Foi adicionado suporte às transições de elementos compartilhados para destinos de fragmentos e atividades (b/79665225). Para ver mais informações, consulte Implementar a navegação com o componente de arquitetura Navigation.
- A seleção de um item no
NavigationViewagora fecha qualquer página inferior inclusa (b/112158843).
Mudanças na API
- Alteração interruptiva: o método
navigate()do Navigator agora usa um parâmetroNavigator.Extras. - O método
getGraph()do NavController agora éNonNullb/112243286.
Correções de bugs
NavigationUI.setupWithNavController()não vaza mais visualizações se usado com visualizações de destinos individuais (b/111961977).- O
onSaveState()do Navigator agora é chamado apenas uma vez (b/112627079).
Safe Args
- As classes de diretivas do destino do Navigation agora estendem a classe do pai correspondente, se ele existir (b/79871405).
- As classes Directions e Args agora têm uma implementação
toString()b/111843389.
Versão 1.0.0-alpha05
10 de agosto de 2018
Correções de bugs
- Correção de um bug que causa um comportamento incorreto da backstack (b/111907708).
- Correção de um bug em
equals()de classes Generated Args (b/111450897). - Correção de um erro de compilação no Safe Args (b/109409713).
- Correção de uma conversão de identificadores de recursos para nomes Java. b/111602491
- Correção de mensagens de erro sobre a capacidade de anulação no plug-in Safe Args.
- Adição de anotações de anulação ausentes.
Versão 1.0.0-alpha04
19 de julho de 2018
O Navigation 1.0.0-alpha04 e o plug-in Safe Args associado do Gradle contêm várias mudanças da API, mudanças de comportamento e correções de bugs.
Mudanças de API / comportamento
- O NavHostFragment sempre vai definir o Fragment atual como o fragmento de navegação principal, garantindo que os gerenciadores de fragmentos filhos sejam abertos antes que o NavController externo seja exibido (b/111345778).
Safe Args
- Alteração interruptiva:
app:typemudou paraapp:argTypepara evitar conflitos com outras bibliotecas, como ConstraintLayout 2.0.0-alpha1 (b/111110548). - Agora é possível clicar em mensagens de erro de Safe Args (b/111534438).
- Agora, as classes Args confirmam se os atributos
NonNullrealmente não são nulos (b/111451769). - Adição de outras anotações
NonNullàs classes NavDirections e Args geradas b/111455455 (b/111455456).
Correções de bugs
- Correção de um problema com o botão "Voltar" do sistema depois de um link direto para um destino de fragmento (b/111515685).
Versão 1.0.0-alpha03
12 de julho de 2018
O Navigation 1.0.0-alpha03 e o plug-in Safe Args associado do Gradle contêm várias mudanças da API, mudanças de comportamento e correções de bugs.
Mudanças de API / comportamento
- Adição de um método NavigationUI.setupWithNavController para a Barra de Ferramentas Google. b/109868820
- Adição de um método NavigationUI.setupWithNavController para CollapsingToolbarLayout (b/110887183).
- popBackStack() agora retorna "false" quando o backstack está vazio ou quando o código de destino fornecido não consta no backstack (b/110893637).
- O FragmentNavigator agora ignora as operações de navegação após o FragmentManager ter salvo o estado, evitando as exceções “Não foi possível realizar esta ação depois de onSaveInstanceState” (b/110987825).
Safe Args
- Alteração interruptiva: caracteres não alfanuméricos em nomes de ação e argumento vão ser substituídos pelo estilo CamelCase nos respectivos nomes de método do NavDirections.
- Por exemplo,
DemoController.indexse tornasetDemoControllerIndex(b/79995048). - Por exemplo,
action_show_settingsse tornaactionShowSettings(b/79642240).
- Por exemplo,
- Alteração interruptiva: os argumentos agora são considerados não nulos por padrão. Para permitir valores nulos em argumentos parceláveis e de string, adicione
app:nullable="true"(b/79642307). - Agora é possível usar
app:type="long"com defaultValues na forma de "123L" (b/79563966). - Os argumentos parcelable agora são compatíveis, usando um nome de classe totalmente qualificado para
app:type. O único valor padrão compatível é"@null"(b/79563966). - As classes de Args agora implementam
equals()ehashCode()(b/79642246). - O plug-in Safe Args agora pode ser aplicado a projetos de biblioteca (b/80036553).
- O plug-in Safe Args agora pode ser aplicado a projetos de recursos. b/110011752
Correções de bugs
- Correção de problemas de navegação durante os métodos de ciclo de vida do Fragment. b/109916080
- Correção de problemas de navegação por gráficos aninhados várias vezes (b/110178671).
- Correção de problemas ao usar
setPopUpTocom o primeiro destino no gráfico (b/109909461). - Correção de problemas em que todos os valores
app:defaultValueestavam sendo transmitidos como Strings (b/110710788). - O AAPT2 incluído no Plug-in do Android para Gradle 3.2 Beta 01 agora mantém regras para todos os atributos
android:nameem arquivos XML do Navigation (b/79874119). - Correção de vazamento de memória ao substituir o FragmentNavigator padrão (b/110900142).
Versão 1.0.0-alpha02
7 de junho de 2018
Mudanças de comportamento
FragmentNavigatoragora usasetReorderingAllowed(true)b/109826220.O Navigation agora aplica URLDecodes a argumentos analisados de URLs de links diretos (b/79982454).
Correções de bugs
Correção de uma
IllegalStateExceptionao chamar a navegação dos métodos de ciclo de vida do Fragment (b/79632233).O Navigation agora depende da Biblioteca de Suporte 27.1.1 para corrigir a tremulação ao usar animações (b/80160903).
Correção de uma
IllegalArgumentExceptionao usar defaultNavHost="true" como um fragmento filho (b/79656847).Correção de um
StackOverflowErrorao usar o NavDeepLinkBuilder (b/109653065).Correção de um
IllegalArgumentExceptionao navegar de volta para um gráfico aninhado (b/80453447).Correção de um problema com a sobreposição de fragmentos ao usar
launchSingleTop(b/79407969).O Navigation agora cria a backstack sintética correta para gráficos aninhados (b/79734195).
A NavigationUI agora destaca o item correto ao usar um gráfico aninhado como um
MenuItem(b/109675998).
Mudanças na API
O atributo
clearTaskdas ações e a API associada emNavOptionsforam descontinuados (b/80338878).O atributo
launchDocumentdas ações e a API associada emNavOptionsforam descontinuados (b/109806636).
Versão 1.0.0-alpha01
8 de maio de 2018
O Navigation oferece um framework para criar a navegação
no app. Essa versão inicial é 1.0.0-alpha01.