Navigation

O Navigation é um framework para navegar entre "destinos" em um aplicativo Android que oferece uma API consistente, independentemente de os destinos serem implementados como fragmentos, atividades ou outros componentes. Consulte os documentos de referência para ver mais informações.

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 para os artefatos necessários no arquivo build.gradle para seu app ou módulo:

dependencies {
  def nav_version = "2.1.0"

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

}

Safe Args

Para adicionar Safe Args ao seu projeto, inclua o seguinte classpath no arquivo build.gradle de nível superior:

    buildscript {
        repositories {
            google()
        }
        dependencies {
            def nav_version = "2.1.0-rc01"
            classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
        }
    }
    

Você também precisa aplicar um dos dois plug-ins disponíveis.

Para gerar código Java adequado para módulos Java ou Java e Kotlin misto, inclua esta linha no 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 arquivogradle.properties , conforme 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.

Versão 2.2.0-alpha01

7 de agosto de 2019

androidx.navigation:navigation-*:2.2.0-alpha01 foi lançado. As confirmações inclusas nessa versão podem ser encontradas clicando aqui.

Novos recursos

  • SavedStateViewModelFactory agora é a fábrica padrão ao usar by navGraphViewModels() ou o construtor ViewModelProvider com um ViewModelStoreOwner retornado por NavController.getViewModelStoreOwner(). (b/135716331)

Alterações 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 Fragments. (b/137310379)

Versão 2.1.0-rc01

7 de agosto de 2019

androidx.navigation:navigation-*:2.1.0-rc01 foi lançado. As confirmações inclusas nessa versão podem ser encontradas clicando aqui.

Alterações na API

  • A API getViewModelStore() obsoleta no NavController introduzida em 2.1.0-alpha02 foi removida. (aosp/1091021)

Versão 2.1.0-beta02

19 de julho de 2019

androidx.navigation:*:2.1.0-beta02 foi lançado. As confirmações inclusas nessa versão podem ser encontradas clicando aqui.

Correções de bugs

  • Remoção da dependência não intencional do Jacoco que havia sido introduzida em 2.1.0-beta01. (b/137782950)

Versão 2.1.0-beta01

17 de julho de 2019

androidx.navigation:*:2.1.0-beta01 foi lançado. As confirmações inclusas nessa versão podem ser encontradas clicando aqui.

Novos recursos

  • Agora, NavigationUI anima a remoção do botão Acima ao usar setupWithNavController() com uma Toolbar ou CollapsingToolbarLayout. (b/131403621)

Correções de bugs

  • Correção de um problema de tempo ao usar vários NavHostFragments com o mesmo contêiner com findNavController(). (b/136021571)

Versão 2.1.0-alpha06

2 de julho de 2019

androidx.navigation:*:2.1.0-alpha06 foi lançado. As confirmações inclusas nessa versão podem ser encontradas clicando aqui.

Novos recursos

  • O atributo app:navGraph usado pelo 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)

Alterações na API

  • O uso da API getViewModelStore() no NavController foi suspenso 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)

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 foi lançado. As confirmações inclusas nessa versão podem ser encontradas clicando aqui.

Alterações na API

  • As APIs relacionadas ao host no NavController foram renomeadas e movidas para uma nova subclasse de NavController, NavHostController. (aosp/966091)
  • O método setHostOnBackPressedDispatcherOwner() do NavController 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 era retornada anteriormente por setHostOnBackPressedDispatcherOwner(). (aosp/966091)

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 foi lançado. As confirmações inclusas nessa versão podem ser encontradas clicando aqui.

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
  • Agora, DialogFragmentNavigator manipula corretamente as operações popBackStack() e navigateUp(). b/132576764
  • Correção de um problema de 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 foi lançado. As confirmações inclusas nessa versão podem ser encontradas clicando aqui.

Problemas conhecidos

  • NavHostFragment continua interceptando o botão Voltar do sistema, apesar de usar app:defaultNavHost="false" b/132077777

Novos recursos

  • É possível criar destinos <dialog> que mostrarão um DialogFragment quando você navigate para eles. NavHostFragment é compatível com destinos 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

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

Alterações 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 um 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

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 um app:argType não especificado agora é inferido corretamente como um argumento string. b/129629192

Versão 2.1.0-alpha02

3 de abril de 2019

androidx.navigation:*:2.1.0-alpha02 foi lançado. As confirmações inclusas nessa versão podem ser encontradas clicando aqui.

Novos recursos

  • Agora você pode criar ViewModels com escopo definido no nível do gráfico de navegação por meio da delegação da propriedade by navGraphViewModels() para usuários do Kotlin ou usando a API getViewModelStore() adicionada ao NavController. b/111614463

Alterações 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

Correções de bugs

  • O android:name para destinos <activity> não é mais analisado 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.

Alterações na dependência

  • O Navigation agora depende de androidx.core:core:1.0.1 e de androidx.fragment:fragment:1.1.0-alpha05. Essa versão também remove a dependência do androidx.legacy:legacy-support-core-utils:1.0.0. b/128632612

Alterações na API

  • Um novo método Navigation.createNavigateOnClickListener(NavDirections) foi adicionado como alternativa à criação de um listener de clique com um código de recurso e um pacote. b/127631752
  • FragmentNavigator.instantiateFragment está obsoleto. Agora, a implementação padrão usa FragmentFactory para instanciar fragmentos. b/119054429

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
  • O Safe Args agora depende do KotlinPoet 1.1.0, corrigindo um problema com nomes de pacotes extremamente longos. b/123654948

Versão 2.0.0

14 de março de 2019

O Navigation 2.0.0 foi lançado sem alterações do 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 código do grupo androidx.navigation e altera 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 alteração no código será necessária para atualizar do 1.0.0-rc02, além de atualizar 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

14 de março de 2019

O Navigation 1.0.0 foi lançado sem alterações do 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 código b/126251695
  • navigateUp() agora lida corretamente com a navegação de volta à tarefa do seu app quando é chamado depois de manipular um link direto sem FLAG_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 escapa corretamente as palavras-chave Kotlin, como in e fun no nome do pacote associado à classe R 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 fragmentos 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 um android:defaultValue para argumentos reference. 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() e navigateUp agora retornam false corretamente ao exibir o último destino na pilha de retorno, corrigindo uma regressão introduzida em 1.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 do Navigator ou em argumentos enviados para um NavDestination. b/123893858
  • As classes NavArgs geradas pelo Safe Args não travam 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 por meio do Safe Args. Por isso, apenas argumentos com um app:argType="reference" podem ter um valor padrão apontado 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
  • 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

  • Agora, o Safe Args pode ser usado em módulos de biblioteca e de 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 do NavController, causando uma IllegalStateException ao tentar restaurar a pilha de retorno. b/123803044
  • Correção de um problema em que a seta para voltar manipulada 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 lida corretamente com 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 a 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 classe NavArgs gerada pelo Safe Args em uma Activity ou Fragment. 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-in androidx.navigation.safeargs anterior. b/110263087

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 um NavController redefinirá a pilha de retorno. b/111450672
  • Os links diretos desconhecidos deixaram de gerar uma IllegalStateException, mas são ignorados, corrigindo problemas com NavHostFragments múltiplos ou aninhados. b/121340440

Alterações importantes

  • O método NavOptions.applyPopAnimationsToPendingTransition() para aplicar animações a uma atividade foi movido para ActivityNavigator. 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ó devem ser geradas por meio dos métodos estáticos nas classes Directions geradas. b/122963206
  • O Bundle retornado de getArguments() do NavDirections agora está marcado como @NonNull em vez de @Nullable. b/123243957

Correções de bugs

  • NavDeepLinkBuilder agora lida corretamente com vários PendingIntents simultâneos para o mesmo destino usando os argumentos que você transmite para determinar a exclusividade. b/120042732
  • NavController agora lida corretamente com as operações popBackStack() ao usar um NavHostFragment 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 Acima. b/120395362
  • As classes Directions geradas pelo Safe Args agora lidam corretamente com ações globais que têm o mesmo código de uma ação em um destino. b/122962504
  • As classes NavDirections geradas pelo Safe Args agora têm valores hashCode() iguais corretos quando equals() retorna "true". b/123043662
  • FragmentNavigator agora gera uma mensagem de erro melhor se você tenta fazer FragmentTransactions personalizadas no FragmentManager do NavHostFragment. Use sempre getChildFragmentManager(). b/112927148

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 navigate() corretas estão sendo feitas. Essa abordagem é discutida em detalhes na palestra Atividade Única no AndroidDevSummit 2018 (vídeo em inglês), e trabalharemos em 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
  • Agora, AppBarConfiguration permite que você defina uma instância OnNavigateUpListener substituta que será chamada quando navController.navigateUp() retornar false. b/79993862 b/120690961

Alterações importantes

  • Ao usar um <argument> com um argType="reference", o Navigation não analisará mais a referência e fornecerá o próprio código 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étodos setup. Adicione menuCategory="secondary" ao seu MenuItem para evitar a exibição da pilha de retorno. aosp/852869
  • 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

Correções de bugs

  • Agora, os argumentos são analisados corretamente a partir dos 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 posteriores. 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

  • As etiquetas de destino, quando usadas com os métodos NavigationUI, substituirão automaticamente as instâncias {argName} no seu android:label com o argumento correto. b/80267266
  • O Navigation agora depende da Biblioteca de Suporte 28.0.0. b/120293333

Alterações importantes

  • OnNavigatedListener foi renomeado para OnDestinationChangedListener. b/118670572
  • OnDestinationChangedListener agora também transmite o Bundle de argumentos. aosp/837142
  • Os atributos app:clearTask e app:launchDocument e os métodos associados a eles foram removidos. Use app: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ão Builder e adiciona a capacidade de definir qualquer sinalização Intent..FLAG_ACTIVITY_ aosp/828140
  • NavController.onHandleDeepLink foi renomeado para handleDeepLink. aosp/836063
  • Muitas classes e métodos que não se destinam à subclassificação, como NavOptions, NavInflater, NavDeepLinkBuilder e AppBarConfiguration, tornaram-se final. 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 fragmentos foi movida para FragmentNavigator, facilitando a delegação da criação de Fragment para um FragmentFactory. b/119054429
  • O construtor para NavGraphNavigator não usa mais um Context. aosp/835340
  • NavigatorProvider agora é uma classe, não uma interface. O NavigatorProvider retornado por getNavigatorProvider() não teve a funcionalidade alterada. aosp/830660
  • NavDestination.navigate() foi removido. Em vez disso, chame navigate() no Navigator. aosp/830663
  • Refatoração significativa do Navigator, removendo a necessidade de OnNavigatorNavigatedListener e fazendo com que navigate retorne o NavDestination para o qual a navegação ocorreu.
  • As instâncias do Navigator não podem mais enviar eventos de exibição para o NavController. Use um OnBackPressedCallback para interceptar o pressionamento do botão "Voltar" e chamar navController.popBackStack(). aosp/833716

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 objetos não String chamando toString(). b/120161365

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
  • O Safe Args aceita matrizes de todos os tipos compatíveis. b/111487504
  • O 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 transmitir argumentos para o destino inicial do seu gráfico. b/110300470
  • Os links diretos agora são compatíveis com esquemas personalizados com pontos, hifens e sinais de adição. b/112806402

Alterações importantes

  • O módulo navigation-testing-ktx foi inserido no navigation-testing artifact e não será mais publicado.
  • O artefato navigation-testing agora tem uma dependência na biblioteca padrão do 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.
  • 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

  • Links diretos agora analisam os parâmetros de consulta corretamente. b/110057514
  • Os destinos de atividades agora aplicam corretamente todas as animações de entrada e saída. b/117145284
  • Correção de falhas que ocorriam depois que a configuração era alterada ao usar navegadores 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 com a criação de Directions para um gráfico <include>. b/116542123

Versão 1.0.0-alpha06

20 de setembro de 2018

Novos recursos

Alterações na API

  • Alteração importante: o método navigate() do Navigator agora usa um parâmetro Navigator.Extras.
  • O método getGraph() do NavController agora é NonNull. b/112243286

Correções de bugs

  • NavigationUI.setupWithNavController() não vaza mais exibições se usado com exibições de destinos individuais. b/111961977
  • O onSaveState() do Navigator agora só é chamado 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() útil. 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 alterações da API, mudanças de comportamento e correções de bugs.

Alterações 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 importante: app:type foi alterado 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

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 alterações da API, mudanças de comportamento e correções de bugs.

Alterações 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 importante: 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
    • Exemplo: DemoController.index se tornará setDemoControllerIndex. b/79995048
    • Exemplo: action_show_settings se tornará actionShowSettings. b/79642240
  • Alteração importante: os argumentos agora são considerados não nulos por padrão. Para permitir valores nulos em strings e argumentos parcelable, adicione app:nullable="true". b/79642307
  • Agora você pode usar app:type="long" com defaultValues na forma de "123L". b/79563966
  • Compatibilidade para argumentos parcelable usando um nome de classe totalmente qualificado para app:type. O único valor padrão compatível é "@null". b/79563966
  • Classes 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

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 usa setReorderingAllowed(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 uma IllegalArgumentException ao navegar de volta para um gráfico aninhado. b/80453447

  • Correção de um problema com a sobreposição de Fragments 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

Alterações na API

  • O uso do atributo clearTask para ações e da API associada em NavOptions foi suspenso. b/80338878

  • O uso do atributo launchDocument para ações e da API associada em NavOptions foi suspenso. b/109806636

Versão 1.0.0-alpha01

8 de maio de 2018

O Navigation oferece um framework para a compilação de navegação no app. Essa versão inicial é 1.0.0-alpha01.