O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Navegação

Guia do usuário  Amostra de código (link em inglês)  Codelab
A navegação é um framework para navegar entre "destinos" em um aplicativo Android que oferece uma API consistente, independentemente dos destinos serem implementados como fragmentos, atividades ou outros componentes.

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
Última atualização desta biblioteca: 28 de outubro de 2020

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.1"

  // 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"
}

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.1"
        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 compilaçã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.

Criar novo problema (link em inglês)

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.0.0-alpha01

28 de outubro de 2020

Lançamento de android.navigation:navigation-compose:1.0.0-alpha01. 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() e currentBackStackEntryAsState() para permitir a elevação do estado e conectar NavController a elementos que podem ser compostos fora do NavHost, como uma barra de navegação inferior.

Consulte o guia do Compose Navigation para ver mais informações.

Versão 2.3.1

Versão 2.3.1

14 de outubro de 2020

Lançamento de androidx.navigation:navigation-*:2.3.1. 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 a NavigationUI é capaz de abrir a gaveta mesmo quando usar LOCK_MODE_LOCKED_CLOSED ou LOCK_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

Lançamento de androidx.navigation:navigation-*:2.3.0. 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 e navigation-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 um TestNavHostController 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 um SavedStateHandle 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 com Openable: todos os usos de DrawerLayout em NavigationUI foram substituídos pela interface Openable mais genérica adicionada em CustomView 1.1.0 e implementada por DrawerLayout em DrawerLayout 1.1.0.
  • Compatibilidade com ação e tipo MIME em links diretos: os links diretos foram expandidos para oferecer compatibilidade com app:action e app:mimeType, além do app:uri disponível anteriormente. NavController agora oferece compatibilidade com a navegação por qualquer combinação desses campos por meio da nova classe NavDeepLinkRequest. 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 (link em inglês). 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

Lançamento de androidx.navigation:navigation-*:2.3.0-rc01. 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 com singleTop (b/158006669, link em inglês).
  • Todas as exceções destination is unknown geradas por NavController agora têm mais informações de depuração para ajudar a determinar o estado do NavController (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 do NavBackStackEntry não era atualizado corretamente após a interrupção do processo. (b/155218371, link em inglês)
  • As instâncias OnDestinationChangedListener registradas antes de chamar setGraph() agora recebem o destino restaurado corretamente após a interrupção do processo. (b/155218371, link em inglês)
  • Ao usar singleTop, o NavBackStackEntry agora tem os argumentos atualizados corretamente e enviados para todas as instâncias de OnDestinationChangeListener. (b/156545508, link em inglês)

Atualizações de dependência

Versão 2.3.0-alpha06

29 de abril de 2020

Lançamento de androidx.navigation:navigation-*:2.3.0-alpha06. 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 e app:mimeType, além do app:uri disponível anteriormente. O NavController agora é compatível com a navegação por qualquer combinação desses campos por meio da nova classe NavDeepLinkRequest (b/136573074, b/135334841, links em inglês).

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

Lançamento do androidx.navigation:navigation-*:2.3.0-alpha05. 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 especificar app:graphPackage, e um padrão será usado adicionando o sufixo moduleName ao applicationId após um ponto. Se você precisa personalizar seu graphPackage, um marcador ${applicationId} agora é compatível. (b/152696768, link em inglês)
  • 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âncias NavHostFragment na sua Activity. (b/147378752, link em inglês)

Atualizações de dependência

Versão 2.3.0-alpha04

18 de março de 2020

Lançamento do androidx.navigation:navigation-*:2.3.0-alpha04. 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, link em inglês)
  • DynamicActivityNavigator agora usa um Context no construtor em vez de uma Activity. (aosp/1250252, link em inglês)

Correções de bugs

  • NavigationUI não ignora mais rótulos vazios (ou seja, um destino com android: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

Lançamento do androidx.navigation:navigation-*:2.3.0-alpha03. 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 interface Openable introduzida em CustomView 1.1.0-alpha02, que DrawerLayout implementa a partir do DrawerLayout 1.1.0-alpha04, permitindo que você use implementações personalizadas de Openable com NavigationUI (b/129030452, link em inglês).

Correções de bugs

  • As regras navigation-common-ktx do ProGuard agora mantêm corretamente apenas as classes NavArgs que são usadas, em vez de todas as instâncias NavArgs. (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 Core 1.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 Core 1.2.0.

Versão 2.3.0-alpha02

19 de fevereiro de 2020

Lançamento do androidx.navigation:navigation-*:2.3.0-alpha02. A versão 2.3.0-alpha02 contém essas confirmações (link em inglês).

Novos recursos

  • NavBackStackEntry agora permite que você acesse um SavedStateHandle 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() e getPreviousBackStackEntry() foram adicionados para facilitar a recuperação de um NavBackStackEntry 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 e KEY_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

Versão 2.3.0-alpha01

5 de fevereiro de 2020

Lançamento do androidx.navigation:navigation-*:2.3.0-alpha01. 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 classe TestNavHostController. Essa classe oferece uma alternativa ao uso de um NavController 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, link em inglês)
  • 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, link em inglês)
  • Do Navigation 2.2.1: as regras do ProGuard navigation-ui para DrawerArrowDrawable foram atualizadas para garantir que android.enableJetifier=true não seja obrigatório. (b/147610424, link em inglês)
  • Do Navigation 2.2.1: o módulo navigation-common-ktx agora tem um nome de pacote de manifesto exclusivo em vez de ter o mesmo nome de pacote de manifesto que navigation-runtime-ktx. (aosp/1141947, link em inglês)

Atualizações de dependência

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âncias NavHostFragment na sua Activity. (b/147378752, link em inglês)
  • NavigationUI não ignora mais rótulos vazios (ou seja, um destino com android: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, link em inglês)
  • As regras navigation-common-ktx do ProGuard agora mantêm corretamente apenas as classes NavArgs que são usadas, em vez de todas as instâncias NavArgs. Isso foi lançado anteriormente no Navigation 2.3.0-alpha03. (b/150213558, link em inglês)

Atualizações de dependência

Versão 2.2.1

Versão 2.2.1

5 de fevereiro de 2020

Lançamento do androidx.navigation:navigation-*:2.2.1. 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, link em inglês)
  • As regras do ProGuard navigation-ui para DrawerArrowDrawable foram atualizadas para garantir que android.enableJetifier=true não seja obrigatório. (b/147610424, link em inglês)
  • 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 que navigation-runtime-ktx. (aosp/1141947, link em inglês)

Atualizações de dependência

Versão 2.2.0

Versão 2.2.0

22 de janeiro de 2020

Lançamento de androidx.navigation:navigation-*:2.2.0. 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. O NavBackStackEntry retornado fornece um LifecycleOwner acionado pela navegação, ViewModelStoreOwner (o mesmo retornado por NavController.getViewModelStoreOwner()), e SavedStateRegistryOwner, 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 usar by navGraphViewModels() ou o construtor ViewModelProvider com um ViewModelStoreOwner retornado por NavController.getBackStackEntry() ou NavController.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 usa FragmentContainerView 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

Lançamento de androidx.navigation:navigation-*:2.2.0-rc04. 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 Fragment 1.2.0-rc04 (b/145769814, link em inglês).

Versão 2.2.0-rc03

4 de dezembro de 2019

Lançamento de androidx.navigation:navigation-*:2.2.0-rc03. 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, link em inglês).
  • Correção de um problema na análise de links diretos em que parâmetros opcionais recebem "@null" em vez de null (b/141613546, link em inglês).
  • NavHostFragment agora restaura corretamente o gráfico após uma mudança de configuração quando usado com FragmentContainerView (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 SavedState 1.0.0-rc03, da Activity 1.1.0-rc03 e do Fragment 1.2.0-rc03 quando apropriado.

Versão 2.2.0-rc02

7 de novembro de 2019

Lançamento do androidx.navigation:navigation-*:2.2.0-rc02. 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

Lançamento de androidx.navigation:navigation-*:2.2.0-rc01 sem alterações 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

Lançamento do androidx.navigation:navigation-*:2.2.0-beta01. A versão 2.2.0-beta01 contém essas confirmações (link em inglês).

Novos recursos

  • NavDestination e suas subclasses agora modificam toString() 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() em Activity 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

Lançamento do androidx.navigation:navigation-*:2.2.0-alpha03. A versão 2.2.0-alpha03 contém essas confirmações (link em inglês).

Mudanças de comportamento

  • Chamar setViewModelStore() depois de chamar setGraph agora resulta em um IllegalStateException. Isso sempre tem que ser definido pelo NavHost como parte da configuração inicial para garantir que todas as instâncias de NavBackStackEntry tenham um armazenamento consistente para instâncias de ViewModel. (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 de ViewModel anexadas a várias instâncias de ViewModelStore 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

Lançamento do androidx.navigation:navigation-*:2.2.0-alpha02. 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. O NavBackStackEntry retornado fornece um LifecycleOwner acionado pela navegação, ViewModelStoreOwner (o mesmo retornado por NavController.getViewModelStoreOwner()), e SavedStateRegistryOwner, 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 a ViewPager2 falhou com um IllegalArgumentException. (b/133640271)
  • NavInflater agora evita chamar getResourceName() 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

Lançamento do androidx.navigation:navigation-*:2.2.0-alpha01. 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 o by navGraphViewModels() ou o construtor ViewModelProvider com um ViewModelStoreOwner retornado por NavController.getViewModelStoreOwner(). (b/135716331, link em inglês)

Mudanças na API

Correções de bugs

  • NavHostFragment agora usa FragmentContainerView, 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

Lançamento do androidx.navigation:navigation-*:2.1.0. 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 API getViewModelStoreOwner() adicionada a NavController. 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 um DialogFragment 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 um Uri, 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 para NavHostController, permitindo que implementações conectassem NavController ao host LifecycleOwner, OnBackPressedDispatcher e ViewModelStore.

Versão 2.1.0-rc01

7 de agosto de 2019

Lançamento do androidx.navigation:navigation-*:2.1.0-rc01. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Mudanças na API

  • A API getViewModelStore() suspensa em NavController introduzida em 2.1.0-alpha02 foi removida. (aosp/1091021, link em inglês)

Versão 2.1.0-beta02

19 de julho de 2019

Lançamento do androidx.navigation:*:2.1.0-beta02. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

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

Lançamento do androidx.navigation:*:2.1.0-beta01. 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 usar setupWithNavController() com Toolbar ou CollapsingToolbarLayout. (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, link em inglês)

Versão 2.1.0-alpha06

2 de julho de 2019

Lançamento do androidx.navigation:*:2.1.0-alpha06. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • O atributo app:navGraph usado por NavHostFragment agora foi movido para o artefato navigation-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() em NavController foi suspensa em favor do novo método getViewModelStoreOwner() que retorna um ViewModelStoreOwner. (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 destinos FloatingWindow. (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, link em inglês)

Versão 2.1.0-alpha05

5 de junho de 2019

Lançamento do androidx.navigation:*:2.1.0-alpha05. 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 de NavController, NavHostController. (aosp/966091)
  • O método NavController setHostOnBackPressedDispatcherOwner() foi substituído pelo método setOnBackPressedDispatcher() do NavHostController e agora exige que você chame setLifecycleOwner() antes de chamá-lo. (aosp/965409)
  • NavHostController agora contém um método enableOnBackPressed(boolean) que substitui a classe NavHostOnBackPressedManager que foi retornada anteriormente por setHostOnBackPressedDispatcherOwner(). (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, link em inglês)

Versão 2.1.0-alpha04

16 de maio de 2019

Lançamento do androidx.navigation:*:2.1.0-alpha04. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Correções de bugs

  • NavHostFragment respeita corretamente o app:defaultNavHost ao interceptar os eventos do botão Voltar do sistema, corrigindo uma regressão no Navigation 2.1.0-alpha03. b/132077777
  • DialogFragmentNavigator agora lida corretamente com as operações popBackStack() e navigateUp(). b/132576764
  • Correção de um problema IllegalStateException: unknown destination during restore ao navegar repetidamente entre gráficos aninhados. (b/131733658, link em inglês)

Versão 2.1.0-alpha03

7 de maio de 2019

Lançamento do androidx.navigation:*:2.1.0-alpha03. 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, link em inglês)

Novos recursos

  • Agora você pode criar destinos <dialog> que mostrarão um DialogFragment 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ância NavDirections, você pode navegar por meio de um Uri, que usa o <deepLink> que você adicionou a um destino para navegar para o destino correto. (b/110412864, link em inglês)

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, link em inglês)

Mudanças na API

  • O uso do método createFragmentNavigator() de NavHostFragment foi suspenso, e a funcionalidade dele foi movida para o novo método onCreateNavController() para deixar mais claro que esse é o ponto de entrada correto da adição de navegadores personalizados ao subclassificar NavHostFragment. b/122802849
  • Um método hasDeepLink() foi adicionado a NavDestination para permitir que você verifique se determinado Uri pode ser manipulado por esse destino ou, no caso de um NavGraph, por qualquer destino no gráfico de navegação. (b/117437718, link em inglês)

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 usando OnBackPressedDispatcher. 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” com app:argType não especificado agora é inferido corretamente como um argumento string. (b/129629192, link em inglês)

Versão 2.1.0-alpha02

3 de abril de 2019

Lançamento do androidx.navigation:*:2.1.0-alpha02. 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 por meio da propriedade by navGraphViewModels() delegada para usuários de Kotlin ou usando a API getViewModelStore() adicionada a NavController. (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 com app: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, link em inglês)

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 e androidx.fragment:fragment:1.1.0-alpha05. Esta versão também remove a dependência de androidx.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 (link em inglês).
  • FragmentNavigator.instantiateFragment está suspenso no momento. A implementação padrão agora usa FragmentFactory 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 usar android:defaultValue="@null" b/128531879 (link em inglês).
  • O Safe Args agora depende do KotlinPoet 1.1.0, o que corrige um problema com nomes de pacotes extremamente longos b/123654948 (link em inglês).

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 (link em inglês)
  • navigateUp() agora gerencia corretamente a navegação de volta à tarefa do app quando é chamado depois de processar um link direto sem FLAG_ACTIVITY_NEW_TASK b/126082008 (link em inglês)
  • Correção de um problema com o ActivityNavigator.applyPopAnimationsToPendingTransition, que não aplicava a animação correta de saída b/126237567 (link em inglês)
  • O código Kotlin gerado pelo Safe Args agora faz corretamente o escape das palavras-chave do Kotlin, como in e fun no nome do pacote associado à classe R b/126020455 (link em inglês).

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 (link em inglês).

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 um android:defaultValue para argumentos reference b/124248602 (link em inglês).

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 (link em inglês).

Correções de bugs

  • popBackStack() e navigateUp agora retornam corretamente false ao colocar o último destino na pilha de retorno, corrigindo uma regressão introduzida em 1.0.0-beta01 (b/123933201, link em inglês).
  • 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 do Navigator ou em argumentos enviados para um NavDestination (b/123893858, link em inglês).
  • As classes NavArgs geradas pelo Safe Args não falham mais ao restaurar um argumento Parcelable[] do estado da instância salva b/123963545 (link em inglês).
  • O Safe Args agora limpa corretamente as classes Kotlin geradas sem necessidade b/124120883 (link em inglês).

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 por meio do 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 um app:argType diferente resultará em uma exceção ao analisar o XML de navegação b/123551990 (link em inglês).
  • O Safe Args agora depende do Plug-in do Android para Gradle 3.3.0 aosp/888413 (link em inglês).
  • O Safe Args agora depende do Kotlin 1.3.20 aosp/888414 (link em inglês).

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 (link em inglês).
  • 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 (link em inglês).
  • Correção de um problema em que o estado FragmentNavigator ficava dessincronizado com o do NavController, causando uma IllegalStateException ao tentar restaurar a pilha de retorno b/123803044 (link em inglês).
  • 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 (link em inglês).
  • 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, link em inglês).
  • O código Java gerado pelo Safe Args agora processa corretamente ações globais e destinos profundamente aninhados b/123347762 (links em inglês).

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 (link em inglês).

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 (link em inglês).

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 classe NavArgs gerada pelo Safe Args em uma Activity ou Fragment (b/122603367, link em inglês).
  • 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-in androidx.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 (link em inglês).
  • Agora, a ação de chamar setGraph() em um NavController redefinirá a pilha de retorno b/111450672 (link em inglês).
  • Os links diretos desconhecidos deixaram de gerar uma IllegalStateException, mas são ignorados, corrigindo problemas com NavHostFragments múltiplos ou aninhados b/121340440 (link em inglês).

Alterações interruptivas

  • O método NavOptions.applyPopAnimationsToPendingTransition() para aplicar animações pop a uma atividade foi movido para ActivityNavigator (b/122413117, link em inglês).
  • 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, link em inglês).
  • 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 (link em inglês).
  • As classes NavDirections geradas pelo Safe Args não têm mais um construtor público. Elas só podem ser geradas por meio dos métodos estáticos nas classes Directions geradas b/122963206 (link em inglês).
  • O Bundle retornado de getArguments() do NavDirections agora está marcado como @NonNull em vez de @Nullable (b/123243957, link em inglês).

Correções de bugs

  • Agora, NavDeepLinkBuilder processa corretamente vários PendingIntents simultâneos para o mesmo destino usando os argumentos que você transmite para determinar a exclusividade b/120042732 (link em inglês).
  • Agora, NavController processa corretamente as operações popBackStack() ao usar um NavHostFragment aninhado ou outros fragmentos filhos com uma pilha de retorno b/122770335 (link em inglês).
  • Agora, NavigationUI define corretamente a descrição do conteúdo do botão "Para cima" b/120395362 (link em inglês).
  • 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 (link em inglês).
  • As classes NavDirections geradas pelo Safe Args agora têm valores hashCode() iguais corretos quando equals() retorna "true" b/123043662 (link em inglês).
  • FragmentNavigator agora gera uma mensagem de erro melhor se você tenta fazer FragmentTransactions personalizadas no FragmentManager do NavHostFragment. Sempre use getChildFragmentManager(). (b/112927148, link em inglês)

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 o Navigation.

Novos recursos

  • MenuItems com menuCategory="secondary" não serão mais exibidos na pilha de retorno quando usados com métodos NavigationUI b/120104424 (link em inglês).
  • AppBarConfiguration agora permite que você defina uma instância substituta de OnNavigateUpListener que será chamada quando navController.navigateUp() retornar false (b/79993862, b/120690961, links em inglês).

Alterações interruptivas

  • Ao usar um <argument> com um argType="reference", o Navigation não analisará mais a referência, mas fornecerá o próprio ID de recurso bruto b/111736515 (link em inglês).
  • Agora, onNavDestinationSelected() retorna ao destino inicial do seu gráfico de navegação por padrão, tornando-o consistente com os métodos setup. Adicione menuCategory="secondary" ao seu MenuItem para evitar a exibição da pilha de retorno aosp/852869 (link em inglês).
  • Os métodos fromBundle() das classes Args geradas agora assumem um valor Bundle não nulo em vez de um valor anulável de Bundle (aosp/845616, link em inglês)

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 (link em inglês)
  • O Navigation agora exporta corretamente os próprios recursos públicos b/121059552 (link em inglês)
  • 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 (link em inglês)

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, substituirão automaticamente as instâncias do {argName} no seu android:label com o argumento correto b/80267266 (link em inglês)
  • O Navigation agora depende da Biblioteca de Suporte 28.0.0 (b/120293333, link em inglês)

Alterações interruptivas

  • OnNavigatedListener foi renomeado como OnDestinationChangedListener b/118670572 (link em inglês)
  • OnDestinationChangedListener agora também transmite o Bundle de argumentos aosp/837142 (link em inglês)
  • Os atributos app:clearTask e app:launchDocument e os métodos associados foram removidos. Use app:popUpTo com a raiz do seu gráfico para remover todos os destinos da pilha de retorno b/119628354 (link em inglês).
  • ActivityNavigator.Extras agora usa um padrão Builder e adiciona a capacidade de definir qualquer sinalização Intent.FLAG_ACTIVITY_ aosp/828140 (link em inglês)
  • NavController.onHandleDeepLink foi renomeado como handleDeepLink aosp/836063 (link em inglês)
  • Muitas classes e métodos que não se destinam à subclassificação, como NavOptions, NavInflater, NavDeepLinkBuilder e AppBarConfiguration, tornaram-se final aosp/835681 (link em inglês)
  • O método NavHostFragment.setGraph() obsoleto foi removido aosp/835684 (link em inglês)
  • O método NavigationUI.navigateUp(DrawerLayout, NavController) obsoleto foi removido aosp/835684 (link em inglês).
  • A criação de Fragment foi movida para FragmentNavigator, facilitando a delegação da criação de Fragment para um FragmentFactory (b/119054429, link em inglês).
  • O construtor para NavGraphNavigator não usa mais um Context aosp/835340 (link em inglês)
  • O NavigatorProvider agora é uma classe, em vez de uma interface. O NavigatorProvider retornado por getNavigatorProvider() não mudou a funcionalidade aosp/830660 (link em inglês).
  • O NavDestination.navigate() foi removido. Em vez disso, chame navigate() no Navigator aosp/830663 (link em inglês).
  • Refatoração significativa do Navigator, removendo a necessidade de OnNavigatorNavigatedListener e fazendo com que navigate retorne o NavDestination a que a navegação ocorreu.
  • As instâncias do Navigator não podem mais enviar eventos de pop para o NavController. Considere usar um OnBackPressedCallback para interceptar o pressionamento do botão "Voltar" e chamar navController.popBackStack() (aosp/833716, link em inglês).

Correções de bugs

  • popUpTo agora funciona consistentemente quando o destino é um elemento <navigation> b/116831650 (link em inglês)
  • Diversos bugs que resultavam em uma IllegalArgumentException ao usar gráficos aninhados foram corrigidos (b/118713731, b/113611083, b/113346925, b/113305559, links em inglês)
  • O atributo dataPattern de destinos <activity> agora preencherá argumentos de argumentos não String chamando toString() b/120161365 (link em inglês)

Safe Args

  • O 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 (link em inglês)
  • Safe Args funciona com matrizes de todos os tipos compatíveis b/111487504 (link em inglês)
  • Safe Args agora ignora subpastas de diretórios de recursos b/117893516 (link em inglês)
  • O Safe Args adiciona anotações @Override quando apropriado b/117145301 (link em inglês)

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 (link em inglês).
  • Agora você pode transferir argumentos para o destino inicial do seu gráfico b/110300470 (link em inglês)
  • Os links diretos agora são compatíveis com esquemas personalizados com pontos, hífens e sinais de adição b/112806402 (link em inglês).

Alterações interruptivas

  • O módulo navigation-testing-ktx foi incorporado no navigation-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 (link em inglês).
  • As ações não podem mais ser anexadas a destinos de <activity> aosp/785539 (link em inglês).

Correções de bugs

  • Os links diretos agora analisam os parâmetros de consulta corretamente b/110057514 (link em inglês).
  • Os destinos de atividade agora aplicam corretamente todas as animações de entrada e saída b/117145284 (link em inglês).
  • 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 (link em inglês).
  • Directions agora podem ser geradas para classes internas b/117407555 (link em inglês).
  • Correção de um problema ao gerar Directions para um gráfico <include> b/116542123 (link em inglês).

Versão 1.0.0-alpha06

20 de setembro de 2018

Novos recursos

Mudanças na API

  • Alteração interruptiva: o método navigate() do Navigator agora usa um parâmetro Navigator.Extras.
  • O método getGraph() do NavController agora é NonNull (b/112243286, link em inglês)

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, link em inglês)

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, link em inglês)

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, link em inglês)

Safe Args

  • Alteração interruptiva: mudança em app:type para app: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, links em inglês)

Correções de bugs

  • Correção de um problema com o botão "Voltar" do sistema após um link direto para um destino de fragmento. (b/111515685, link em inglês)

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, link em inglês)

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, link em inglês)
  • 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() e hashCode() 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, link em inglês)

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, link em inglês)

Versão 1.0.0-alpha02

7 de junho de 2018

Mudanças de comportamento

  • FragmentNavigator agora usa setReorderingAllowed(true). b/109826220

  • O Navigation agora aplica URLDecodes a argumentos analisados de URLs de links diretos. (b/79982454, link em inglês)

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, link em inglês)

Mudanças na API

  • O atributo clearTask das ações e a API associada em NavOptions foram suspensos. b/80338878

  • O atributo launchDocument das ações e a API associada em NavOptions foram suspensos. (b/109806636, link em inglês)

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.