Navigation
Esta tabela lista todos os artefatos no grupo androidx.navigation
.
Artefato | Versão estável atual | Próximo candidato a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
navigation-* | 2.3.2 | - | - | - |
navigation-compose | - | - | - | 1.0.0-alpha05 |
Como declarar dependências
Para adicionar uma dependência ao 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:
dependencies { def nav_version = "2.3.2" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:1.0.0-alpha05" }
Safe Args
Para adicionar Safe Args
ao seu projeto, inclua o seguinte classpath
no seu arquivo build.gradle
de nível superior:
buildscript { repositories { google() } dependencies { def nav_version = "2.3.2" 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 Java ou módulos Java e Kotlin mistos, adicione esta linha ao arquivo build.gradle
do seu app ou módulo:
apply plugin: "androidx.navigation.safeargs"
Como alternativa, para gerar o código Kotlin adequado para módulos somente Kotlin, adicione:
apply plugin: "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 versão.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas existentes (link em inglês) nesta biblioteca antes de criar um novo. Adicione seu voto a um problema existente clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Navigation Compose versão 1.0.0
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 essas confirmações.
Mudanças na API
- O Navigation Compose agora é compatível com o 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 que permite 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 do NavHost que pode ser composto (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 essas confirmações (link em inglês).
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 seu aplicativo.
Esta versão inicial oferece:
- um elemento
NavHost
que pode ser composto 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;
- compatibilidade com a 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 conectarNavController
a elementos que podem ser compostos fora doNavHost
, como uma barra de navegação inferior.
Consulte o guia do Compose Navigation para ver mais informações.
Versão 2.3.2
Navigation 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>
comonNavDestinationSelected
falhava ao navegar para a Activity (I22e34, b/171364502). - Correção de um problema em que o
navigation-dynamic-features-fragment
resultava 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
OnDestinationChangedListener
ao 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 umpopUpTo
que removia o último destino em um gráfico de navegação não destruiria e removeria imediatamente o gráfico de navegação da pilha de retorno (I910a3). - O SafeArgs do Navigation agora usa o KotlinPoet versão 1.7.2, que adiciona compatibilidade com o 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 comFragmentScenario
eNavigation.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/116886466).
- 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-ui
agora depende do DrawerLayout 1.1.1, garantindo que aNavigationUI
é capaz de abrir a gaveta mesmo quando usarLOCK_MODE_LOCKED_CLOSED
ouLOCK_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 essas confirmações (link em inglês).
Principais mudanças desde a versão 2.2.0
- Integração do módulo de recursos: os artefatos
navigation-dynamic-features-runtime
enavigation-dynamic-features-fragment
permitem navegar para destinos definidos em módulos de recursos, gerenciando automaticamente a instalação dos módulos de recursos conforme necessário. Consulte Navegar com módulos de recursos para ver mais informações. - Teste de navegação: o artefato
navigation-testing
fornece umTestNavHostController
que permite definir o destino atual e verificar a pilha de retorno após as operações de navegação. Consulte Testar a navegação para ver mais informações. - Retornar um resultado: o
NavBackStackEntry
associado a cada destino na pilha de retorno de navegação agora permite que você acesse umSavedStateHandle
adequado para armazenar pequenas quantidades de estado salvo que precisa ser associado a uma entrada específica da pilha de retorno. Consulte Retornar um resultado ao destino anterior para ver mais informações. - Compatibilidade de
NavigationUI
comOpenable
: todos os usos deDrawerLayout
emNavigationUI
foram substituídos pela interfaceOpenable
mais genérica adicionada em CustomView1.1.0
e implementada porDrawerLayout
em DrawerLayout1.1.0
. - Compatibilidade com ação e tipo MIME em links diretos: os links diretos foram expandidos para oferecer compatibilidade com
app:action
eapp:mimeType
, além doapp:uri
disponível anteriormente.NavController
agora oferece compatibilidade com a navegação por qualquer combinação desses campos por meio da nova classeNavDeepLinkRequest
. Consulte Navegar usando NavDgleLinkRequest para ver mais informações.
Problemas conhecidos
- A compatibilidade com 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 incluirão 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 essas confirmações (link em inglês).
Correções de bugs
- Correção de um
NullPointerException
ao substituir uma instância de um destino sem argumentos por outra instância com argumentos comsingleTop
(b/158006669). - Todas as exceções
destination is unknown
geradas porNavController
agora têm mais informações de depuração para ajudar a determinar o estado doNavController
(b/157764916, link em inglês).
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 essas confirmações (link em inglês).
Correções de bugs
- Correção de um problema em que o
Lifecycle
doNavBackStackEntry
não era atualizado corretamente após a interrupção do processo (b/155218371). - As instâncias
OnDestinationChangedListener
registradas antes de chamarsetGraph()
agora recebem o destino restaurado corretamente após a interrupção do processo (b/155218371). - Ao usar
singleTop
, oNavBackStackEntry
agora tem os argumentos atualizados corretamente e enviados para todas as instâncias deOnDestinationChangeListener
(b/156545508, link em inglês)
Atualizações de dependência
- O artefato
NavigationUI
agora depende de CustomView1.1.0-rc01
e DrawerLayout1.1.0-rc01
(aosp/1309696, link em inglês)
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 essas confirmações (link em inglês).
Novos recursos
- Os links diretos foram expandidos para serem compatíveis com
app:action
eapp:mimeType
, além doapp:uri
disponível anteriormente. O NavController agora é compatível com a navegação por qualquer combinação desses campos por meio da nova classeNavDeepLinkRequest
(b/136573074, b/135334841).
Mudanças na API
- Ampliamos a compatibilidade com DSL do Kotlin para destinos Dynamic Navigation (b/148969800)
Correções de bugs
- Correção de um problema em que as intents de link direto eram ignoradas ao usar um destino inicial aninhado (b/154532067, link em inglês).
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 essas confirmações (link em inglês).
Novos recursos
- Para gráficos dinâmicos incluídos usando
<include-dynamic>
, você não precisa mais especificarapp:graphPackage
, e um padrão será usado adicionando o sufixomoduleName
aoapplicationId
após um ponto. Se você precisa personalizar seugraphPackage
, um marcador${applicationId}
agora é compatível. (b/152696768). - Agora, a DSL Kotlin de Navigation Graph expõe um
defaultArguments
Map
para 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
- Do Navigation 2.2.2: correção de uma
IllegalStateException
quando há links diretos para o destino inicial do seu gráfico com várias instânciasNavHostFragment
na 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, link em inglês)
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 essas confirmações (link em inglês).
Novos recursos
- Inclusão de compatibilidade com atividades de módulo de recursos e destinos de fragmento na DSL Kotlin da navegação (b/148969800)
Mudanças na API
- Agora, a classe
DynamicExtras
não usa mais um padrão de construtor e pode ser construída diretamente (aosp/1253671). DynamicActivityNavigator
agora usa umContext
no construtor em vez de umaActivity
(aosp/1250252, link em inglês)
Correções de bugs
NavigationUI
nã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, link em inglês)
Atualizações de dependência
- Os artefatos Navigation Dynamic Features agora dependem do Play Core
1.6.5
(b/149556401, link em inglês)
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 essas confirmações (link em inglês).
Mudanças na API
- Em vez de confiar na classe concreta
DrawerLayout
,AppBarConfiguration
agora usa a interfaceOpenable
introduzida em CustomView1.1.0-alpha02
, queDrawerLayout
implementa usando o DrawerLayout1.1.0-alpha04
, permitindo que você use implementações personalizadas deOpenable
comNavigationUI
(b/129030452, link em inglês).
Correções de bugs
- As regras
navigation-common-ktx
do ProGuard agora mantêm corretamente apenas as classesNavArgs
que são usadas, em vez de todas as instânciasNavArgs
(b/150213558, link em inglês)
Mudanças na dependência
- O Navigation reverteu a dependência no Core
1.2.0
e agora depende do Core1.1.0
para 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 essas confirmações (link em inglês).
Novos recursos
NavBackStackEntry
agora permite que você acesse umSavedStateHandle
adequado 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, link em inglês)
Mudanças na API
- Os métodos de conveniência de
getCurrentBackStackEntry()
egetPreviousBackStackEntry()
foram adicionados para facilitar a recuperação de umNavBackStackEntry
para os destinos atuais e anteriores (b/79672220, link em inglês)
Correções de bugs
- O
navigateUp()
agora transmite os argumentos do destino atual eKEY_DEEP_LINK_INTENT
para o destino anterior ao iniciar o app na sua pilha de tarefas (b/147456890, link em inglês)
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-alpha03 contém essas confirmações (link em inglês).
Novos recursos
- O novo artefato
navigation-testing
fornece uma classeTestNavHostController
. Essa classe oferece uma alternativa ao uso de umNavController
simulado ao testar o Navigation, o que permite definir o destino atual e verificar a pilha de retorno 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
- Do Navigation
2.2.1
: os links diretos sem parâmetros de consulta agora ignoram corretamente todos os parâmetros de consulta em vez de anexá-los a elementos{argument}
no início ou no fim ou a elementos sem correspondência com o link direto (b/147447512). - Do Navigation
2.2.1
: as regras do ProGuardnavigation-ui
paraDrawerArrowDrawable
foram atualizadas para garantir queandroid.enableJetifier=true
não seja obrigatório (b/147610424). - Do Navigation
2.2.1
: o módulonavigation-common-ktx
agora tem um nome de pacote de manifesto exclusivo em vez de ter o mesmo nome de pacote de manifesto quenavigation-runtime-ktx
(aosp/1141947, link em inglês)
Atualizações de dependência
- Do Navigation
2.2.1
: a navegação2.2.1
agora depende do Lifecycle ViewModel SavedState2.2.0
e 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 essas confirmações (link em inglês).
Correções de bugs
- Correção de
IllegalStateException
quando há links diretos para o destino inicial do seu gráfico com várias instânciasNavHostFragment
na sua Activity (b/147378752). NavigationUI
nã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-ktx
do ProGuard agora mantêm corretamente apenas as classesNavArgs
que 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, link em inglês)
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 essas confirmações (link em inglês).
Correções de bugs
- Agora, os links diretos sem parâmetros de consulta ignoram corretamente todos os parâmetros de consulta em vez de anexá-los a elementos
{argument}
no início ou no fim ou a elementos sem correspondência com o link direto (b/147447512). - As regras do ProGuard
navigation-ui
paraDrawerArrowDrawable
foram atualizadas para garantir queandroid.enableJetifier=true
não seja obrigatório (b/147610424). - O módulo
navigation-common-ktx
agora tem um nome de pacote de manifesto exclusivo em vez de compartilhar o mesmo nome de pacote de manifesto quenavigation-runtime-ktx
(aosp/1141947, link em inglês)
Atualizações de dependência
- O Navigation
2.2.1
agora depende do Lifecycle ViewModel SavedState2.2.0
e 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 essas confirmações (link em inglês).
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. ONavBackStackEntry
retornado fornece umLifecycleOwner
acionado 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:
SavedStateViewModelFactory
agora é a fábrica padrão empregada ao usarby navGraphViewModels()
ou o construtorViewModelProvider
com umViewModelStoreOwner
retornado porNavController.getBackStackEntry()
ouNavController.getViewModelStoreOwner()
. - Compatibilidade de links diretos com parâmetros de consulta: links diretos com parâmetros de consulta agora 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.
- Melhoria na compatibilidade com animação:
NavHostFragment
agora usaFragmentContainerView
do 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 essas confirmações (link em inglês).
Correções de bugs
- Ajuste das animações de esmaecimento padrão usadas por
navigation-ui
para corresponder às animações de esmaecimento ajustadas no Fragment1.2.0-rc04
(b/145769814, link em inglês).
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 essas confirmações (link em inglês).
Correções de bugs
- Correção de 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). NavHostFragment
agora restaura corretamente o gráfico após uma mudança de configuração quando usado comFragmentContainerView
(b/143752103, link em inglês).
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-rc03
e do Fragment1.2.0-rc03
quando 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 essas 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 essas 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 essas confirmações (link em inglês).
Novos recursos
NavDestination
e suas subclasses agora modificamtoString()
para fornecer informações mais úteis durante a depuração. b/141264986 (todos os links do rastreador de problemas estão em inglês)
Mudanças de comportamento
- Parâmetros de consulta adicionais agora são ignorados ao fazer a correspondência com links diretos em vez de fazer com que a correspondência falhe (b/141482822, link em inglês)
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()
emActivity
agora tem uma mensagem de erro melhor quando não há extras (b/141408999). - As classes Java
Directions
geradas pelo Safe Args agora contêm valores padrão (b/141099045). - As classes Java
Args
geradas pelo Safe Args agora contêm valores padrão (b/140123727). - Ao usar um
Toolbar
,NavigationUI
não anima mais a alteração do texto ao se mover entre dois destinos de nível superior (b/140848160, link em inglês)
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 essas confirmações (link em inglês).
Mudanças de comportamento
- Chamar
setViewModelStore()
depois de chamarsetGraph
agora resulta em umIllegalStateException
. Isso sempre tem que ser definido peloNavHost
como parte da configuração inicial para garantir que todas as instâncias deNavBackStackEntry
tenham um armazenamento consistente para instâncias deViewModel
. (aosp/1111821. Todos os links do AOSP estão em inglês)
Correções de bugs
- Correção de um
ConcurrentModificationException
ao usar instâncias deViewModel
anexadas a várias instâncias deViewModelStore
com escopo no gráfico de navegação (aosp/1112257, link em inglês)
Versão 2.2.0-alpha02
5 de setembro de 2019
androidx.navigation:navigation-*:2.2.0-alpha02
é lançado. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
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. ONavBackStackEntry
retornado fornece umLifecycleOwner
acionado pela navegação,ViewModelStoreOwner
(o mesmo retornado porNavController.getViewModelStoreOwner()
), eSavedStateRegistryOwner
, além de fornecer os argumentos usados para iniciar o destino. (aosp/1101691, aosp/1101710, links em inglês)
Correções de bugs
- Correção de um problema no qual a adição de
NavHostFragment
aViewPager2
falhou com umIllegalArgumentException
(b/133640271). NavInflater
agora evita chamargetResourceName()
desnecessariamente, acelerando o tempo de inflação em até 40% (b/139213740, link em inglês)
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 aqui (link em inglês).
Novos recursos
SavedStateViewModelFactory
agora é a fábrica padrão usada ao usar oby navGraphViewModels()
ou o construtorViewModelProvider
com umViewModelStoreOwner
retornado porNavController.getViewModelStoreOwner()
(b/135716331, link em inglês)
Mudanças na API
- Em Navigation
2.1.0-rc01
: a APIgetViewModelStore()
suspensa emNavController
apresentada em2.1.0-alpha02
foi removida (aosp/1091021, link em inglês)
Correções de bugs
NavHostFragment
agora usaFragmentContainerView
, corrigindo problemas relacionados à ordem z de animações e a inserções de janelas enviadas para o Android Fragments (b/137310379, link em inglês)
Versão 2.1.0
Versão 2.1.0
5 de setembro de 2019
androidx.navigation:navigation-*:2.1.0
é lançado. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
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-ktx
ou 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 mostrarão umDialogFragment
quando vocênavigate
para eles.NavHostFragment
aceita 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
navigate
com 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
NavHost
personalizado foram movidas paraNavHostController
, permitindo que implementações conectassemNavController
ao hostLifecycleOwner
,OnBackPressedDispatcher
eViewModelStore
.
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 aqui (link em inglês).
Mudanças na API
- A API
getViewModelStore()
suspensa emNavController
introduzida em2.1.0-alpha02
foi removida (aosp/1091021, link em inglês)
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 aqui.
Correções de bugs
- Removida dependência não intencional do Jacoco, introduzida no
2.1.0-beta01
(b/137782950, link em inglês)
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 aqui (link em inglês).
Novos recursos
NavigationUI
agora anima a remoção do botão para cima ao usarsetupWithNavController()
comToolbar
ouCollapsingToolbarLayout
(b/131403621, link em inglês)
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
androidx.navigation:*:2.1.0-alpha06
é lançado. As confirmações incluídas nessa versão podem ser encontradas aqui.
Novos recursos
- O atributo
app:navGraph
usado por NavHostFragment agora foi movido para o artefatonavigation-runtime
. Navegadores personalizados que podem ser adicionados via XML devem usar esse atributo para ter integração com o painel "Host" do Navigation Editor. (b/133880955, link em inglês)
Mudanças na API
- A API
getViewModelStore()
emNavController
foi suspensa em favor do 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 sem diálogo e sem atividade, 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).
- Correção de um bug em que a pilha de retorno do Navigation ficava dessincronizada ao exibir um Fragment 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 aqui (link em inglês).
Mudanças na API
- As APIs relacionadas ao host em
NavController
foram renomeadas e movidas para uma nova subclasse deNavController
,NavHostController
(aosp/966091). - O método
NavController
setHostOnBackPressedDispatcherOwner()
foi substituído pelo métodosetOnBackPressedDispatcher()
doNavHostController
e agora exige que você chamesetLifecycleOwner()
antes de chamá-lo (aosp/965409). NavHostController
agora contém um métodoenableOnBackPressed(boolean)
que substitui a classeNavHostOnBackPressedManager
que foi retornada anteriormente porsetHostOnBackPressedDispatcherOwner()
(aosp/966091, link em inglês)
Correções de bugs
- Correção de um problema em que a pilha de retorno 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
NavHostFragment
respeita corretamente oapp:defaultNavHost
ao interceptar os eventos do botão Voltar do sistema, corrigindo uma regressão no Navigation2.1.0-alpha03
b/132077777.DialogFragmentNavigator
agora lida corretamente com as operaçõespopBackStack()
enavigateUp()
b/132576764.- Correção de um problema
IllegalStateException: unknown destination during restore
ao navegar repetidamente entre gráficos aninhados b/131733658.
Versão 2.1.0-alpha03
7 de maio de 2019
androidx.navigation:*:2.1.0-alpha03
é lançado. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
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 umDialogFragment
quando vocênavigate
para eles.NavHostFragment
aceita destinos de caixas de diálogo por padrão b/80267254. - Agora, além de chamar
navigate
com 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 para corresponder à velocidade de animação padrão de atividades e fragmentos. b/130055522
Mudanças na API
- O uso do método
createFragmentNavigator()
deNavHostFragment
foi suspenso, e a funcionalidade dele foi movida para o novo métodoonCreateNavController()
para deixar mais claro que esse é o ponto de entrada correto da adição de navegadores personalizados ao subclassificarNavHostFragment
b/122802849. - Um método
hasDeepLink()
foi adicionado aNavDestination
para permitir que você verifique se um determinadoUri
pode 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. NavHostFragment
agora intercepta os eventos Back de sistema usandoOnBackPressedDispatcher
. Isso corrige o problema ao fazer a 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:argType
não especificado agora é inferido corretamente como um argumentostring
b/129629192.
Versão 2.1.0-alpha02
3 de abril de 2019
androidx.navigation:*:2.1.0-alpha02
é lançado. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).
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 de Kotlin ou a APIgetViewModelStore()
adicionada aNavController
(b/111614463, link em inglês)
Mudanças na API
- Agora você pode adicionar um
app:targetPackage
a um destino<activity>
para limitar o nome do pacote correspondente. Ele é compatível comapp:targetPackage="${applicationId}"
para restringir o pacote ao seu ID do aplicativo. (b/110975456, link em inglês)
Correções de bugs
- Os destinos
android:name
para<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.1
eandroidx.fragment:fragment:1.1.0-alpha05
. Esta versão também remove a dependência deandroidx.legacy:legacy-support-core-utils:1.0.0
(b/128632612, link em inglês).
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. FragmentNavigator.instantiateFragment
está suspenso no momento. A implementação padrão agora usaFragmentFactory
para instanciar fragmentos b/119054429 (link em inglês).
Correções de bugs
- O Navigation não envia mais um
Bundle
nulo 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 usará as dependências da Biblioteca de Suporte. Todo o desenvolvimento futuro além da versão 1.0 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
- Correção de 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.- Correção de 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
in
efun
no 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
singleTop
b/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
0
como umandroid:defaultValue
para 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()
enavigateUp
agora retornam corretamentefalse
ao colocar o último destino na pilha de retorno, corrigindo uma regressão introduzida em1.0.0-beta01
b/123933201.- O Navigation agora define corretamente o
ClassLoader
durante a restauração do estado da instância salva, evitando problemas ao usar classes personalizadas no estado salvo doNavigator
ou em argumentos enviados para umNavDestination
b/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
no tempo de 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:argType
diferente 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 recurso em todas as versões do Plug-in do Android para Gradle b/121304903.
- Correção de uma regressão que fazia com que uma única operação
popBackStack()
exibisse todas as cópias de um destino da parte superior da pilha de retorno, em vez de apenas um destino por vez b/123552990. - Correção de um problema em que o estado
FragmentNavigator
ficava dessincronizado com o doNavController
, causando umaIllegalStateException
ao tentar restaurar a pilha de retorno b/123803044. - Correção de um problema em que a seta para voltar gerenciada pela
NavigationUI
não aparecia ao usar o ProGuard com ofuscação b/123449431. - O código gerado pelo Safe Args agora é manipulado corretamente com o uso de um
app:argType
apontando para uma classe interna estática no formato.OuterClass$InnerClass
b/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 importantes da API. Consulte a seção Alterações importantes 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 classeNavArgs
gerada pelo Safe Args em umaActivity
ouFragment
b/122603367. - O Safe Args agora permite gerar o código Kotlin aplicando o
plug-in
androidx.navigation.safeargs.kotlin
. O código Kotlin é compilado especificamente para módulos exclusivamente 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 (link em inglês).
Mudanças de comportamento
- Os links diretos correspondentes agora são direcionados para o link direto que tem os argumentos com nível mais alto de correspondência b/118393029.
- Agora, a ação de chamar
setGraph()
em umNavController
redefinirá a pilha de retorno b/111450672. - Os links diretos desconhecidos deixaram de gerar uma
IllegalStateException
, mas são ignorados, corrigindo problemas comNavHostFragment
s múltiplos ou aninhados b/121340440.
Alterações interruptivas
- O método
NavOptions.applyPopAnimationsToPendingTransition()
para aplicar animações pop a uma atividade foi movido paraActivityNavigator
b/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 é
NavDirections
b/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
NavDirections
geradas 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
Bundle
retornado degetArguments()
doNavDirections
agora está marcado como@NonNull
em vez de@Nullable
(b/123243957, link em inglês).
Correções de bugs
- Agora,
NavDeepLinkBuilder
processa corretamente váriosPendingIntent
s simultâneos para o mesmo destino usando os argumentos que você transmite para determinar a exclusividade b/120042732. - Agora,
NavController
processa corretamente as operaçõespopBackStack()
ao usar umNavHostFragment
aninhado ou outros fragmentos filhos com uma pilha de retorno b/122770335. - Agora,
NavigationUI
define 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
NavDirections
geradas pelo Safe Args agora têm valoreshashCode()
iguais corretos quandoequals()
retorna "true" b/123043662. FragmentNavigator
agora gera uma mensagem de erro melhor se você tenta fazerFragmentTransactions
personalizadas noFragmentManager
doNavHostFragment
. Sempre usegetChildFragmentManager()
. (b/112927148, link em inglês)
Versão 1.0.0-alpha09
18 de dezembro de 2018
Esta versão contém alterações importantes da API. Consulte a seção Alterações importantes 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 a Navigation.
Novos recursos
MenuItem
s commenuCategory="secondary"
não serão mais exibidos na pilha de retorno quando usados com métodosNavigationUI
b/120104424.AppBarConfiguration
agora permite que você defina uma instância substituta deOnNavigateUpListener
que será chamada quandonavController.navigateUp()
retornarfalse
(b/79993862, b/120690961, links em inglês).
Alterações interruptivas
- Ao usar um
<argument>
com umargType="reference"
, o Navigation não analisará mais a referência, mas 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 seuMenuItem
para evitar a exibição da pilha de retorno aosp/852869. - Os métodos
fromBundle()
das classesArgs
geradas agora assumem um valorBundle
nã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
argType
correto, 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 é compatível com o 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 importantes da API. Consulte a seção Alterações importantes abaixo.
Novos recursos
- Os rótulos de destino, quando usados com os métodos
NavigationUI
, substituirão automaticamente as instâncias do{argName}
no seuandroid:label
com o argumento correto b/80267266. - Navigation agora depende da Biblioteca de suporte 28.0.0 (b/120293333).
Alterações interruptivas
OnNavigatedListener
foi renomeado comoOnDestinationChangedListener
b/118670572.OnDestinationChangedListener
agora também transmite oBundle
de argumentos aosp/837142.- Os atributos
app:clearTask
eapp:launchDocument
e os métodos associados foram removidos. Useapp:popUpTo
com a raiz do seu gráfico para remover todos os destinos da pilha de retorno b/119628354. ActivityNavigator.Extras
agora usa um padrãoBuilder
e adiciona a capacidade de definir qualquer sinalizaçãoIntent.FLAG_ACTIVITY_
aosp/828140.NavController.onHandleDeepLink
foi renomeado comohandleDeepLink
aosp/836063.- Muitas classes e métodos que não se destinam à subclassificação, como
NavOptions
,NavInflater
,NavDeepLinkBuilder
eAppBarConfiguration
, tornaram-sefinal
aosp/835681. - O método
NavHostFragment.setGraph()
obsoleto foi removido aosp/835684. - O método
NavigationUI.navigateUp(DrawerLayout, NavController)
obsoleto 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
NavGraphNavigator
não usa mais umContext
aosp/835340. - O NavigatorProvider agora é
uma classe, em vez de uma interface. O
NavigatorProvider
retornado porgetNavigatorProvider()
não mudou a funcionalidade aosp/830660. - O
NavDestination.navigate()
foi removido. Em vez disso, chamenavigate()
noNavigator
aosp/830663 (link em inglês). - Refatoração significativa do
Navigator
, removendo a necessidade deOnNavigatorNavigatedListener
e fazendo com quenavigate
retorne oNavDestination
a que a navegação ocorreu. - As instâncias do
Navigator
não podem mais enviar eventos de pop para oNavController
. Considere usar umOnBackPressedCallback
para interceptar o pressionamento do botão "Voltar" e chamarnavController.popBackStack()
(aosp/833716, link em inglês).
Correções de bugs
popUpTo
agora funciona consistentemente quando o destino é um elemento<navigation>
b/116831650.- Diversos bugs que resultavam em uma
IllegalArgumentException
ao usar gráficos aninhados foram corrigidos (b/118713731, b/113611083, b/113346925, b/113305559). - O atributo
dataPattern
de 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. - Safe Args funciona com matrizes de todos os tipos compatíveis b/111487504.
- Safe Args agora ignora subpastas de diretórios de recursos b/117893516.
- O Safe Args adiciona anotações
@Override
quando 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 são compatíveis com esquemas personalizados com pontos, hífens e sinais de adição b/112806402.
Alterações interruptivas
- O módulo
navigation-testing-ktx
foi incorporado nonavigation-testing artifact
e não será mais publicado. - O artefato
navigation-testing
agora 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. - Os gráficos de navegação registrados com manifestos de metadados não são mais compatíveis 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.
- Correção de 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.
- Directions agora podem ser geradas para classes internas b/117407555.
- Correção de um problema ao gerar Directions para um gráfico <include> b/116542123.
Versão 1.0.0-alpha06
20 de setembro de 2018
Novos recursos
- As transições de elementos compartilhados para destinos de Fragment e Activity agora são compatíveis 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
NavigationView
agora fechará 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 éNonNull
b/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 Directions do destino Navigation agora estendem a classe Directions 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 de pilha de retorno b/111907708.
- Correção de um bug em
equals()
de classes Generated Args b/111450897. - Correção de um erro de compilação em 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 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: mudança em
app:type
paraapp:argType
para 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
NonNull
realmente 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 falso quando a pilha de retorno está vazia ou quando o código de destino fornecido não consta na pilha de retorno. 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 serão substituídos pelo estilo CamelCase nos respectivos nomes de método do NavDirections.
- Por exemplo,
DemoController.index
se tornarásetDemoControllerIndex
b/79995048. - Por exemplo,
action_show_settings
se tornaráactionShowSettings
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
setPopUpTo
com o primeiro destino no gráfico b/109909461. - Correção de problemas em que todos os valores
app:defaultValue
estavam 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:name
em 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
FragmentNavigator
agora 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
IllegalStateException
ao 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
IllegalArgumentException
ao usar defaultNavHost="true" como um fragmento filho b/79656847.Correção de um
StackOverflowError
ao usar o NavDeepLinkBuilder b/109653065.Correção de um
IllegalArgumentException
ao 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 pilha de retorno 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
clearTask
das ações e a API associada emNavOptions
foram suspensos b/80338878.O atributo
launchDocument
das ações e a API associada emNavOptions
foram suspensos 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
.