Fragmento
| Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa | 
|---|---|---|---|---|
| 13 de agosto de 2025 | 1.8.9 | - | - | - | 
Como declarar dependências
Para adicionar uma dependência a Fragment, é 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 ao arquivo build.gradle do
seu app ou módulo:
Groovy
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Kotlin
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Para mais informações sobre dependências, consulte Adicionar dependências de build.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.8
Versão 1.8.9
13 de agosto de 2025
Lançamento de androidx.fragment:fragment-*:1.8.9. A versão 1.8.9 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que o cancelamento de um gesto de retorno preditivo que aciona uma operação de ocultação fazia com que o gesto subsequente não fosse animado corretamente ao usar animadores. (I0a400, b/384765586)
- Correção de um erro em que uma combinação de setMaxLifecycleepopBackStacknão conseguia mover o fragmento superior para RESUMED. (I3448b, b/406127576)
Versão 1.8.8
4 de junho de 2025
Lançamento de androidx.fragment:fragment-*:1.8.8. A versão 1.8.8 contém estas confirmações.
Correções de bugs
- Correção de um problema em que o FragmentManagerfalhava ao tentar salvar o estado de fragmentos adicionados comsetMaxLifecycle(Lifecycle.State.INITIALIZED). Como esses fragmentos nunca passaram poronCreate(), eles não têm mais nenhum estado salvo ouonSaveInstanceState()chamado. (I6e37a).
Versão 1.8.7
20 de maio de 2025
Lançamento de androidx.fragment:fragment-*:1.8.7. A versão 1.8.7 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que o FragmentManagernão estava no estado adequado após operações de pop e substituição no mesmo frame, o que poderia causar uma falha ao remover a pilha de retorno usandopopBackStackou o gesto de retorno preditivo. (I50ad1).
- Correção de uma falha causada pelo uso de transições do AndroidX em um caso em que transações rápidas e consecutivas de fragmentos tentam cancelar uma transição não iniciada, e a biblioteca de transição do AndroidX não limpa corretamente o estado da transição. Consulte b/414612221. (Ib5235).
Versão 1.8.6
12 de fevereiro de 2025
Lançamento de androidx.fragment:fragment-*:1.8.6. A versão 1.8.6 contém estas confirmações.
Correções de bugs
- A substituição setOnApplyWindowInsetsListenerdoFragmentContainerViewagora usa um listener nulo, correspondendo ao que o framework permite. (I575f0, b/282790626).
Versão 1.8.5
30 de outubro de 2024
Lançamento de androidx.fragment:fragment-*:1.8.5. A versão 1.8.5 contém estas confirmações.
Correções de bugs
- Correção de um IllegalStateExceptionacionado porsaveBackStacksomente depois que um gesto de volta preditiva era cancelado ou interrompido. (I3387d, b/342419080)
Versão 1.8.4
2 de outubro de 2024
Lançamento de androidx.fragment:fragment-*:1.8.4. A versão 1.8.4 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que pressionar rapidamente o botão "Voltar" do sistema ou fazer o gesto de voltar rapidamente causava falhas nos Fragments ao usar as transições do AndroidX. (Ibc038, b/364804225)
- Correção de um problema em fragmentos em que a interrupção de um gesto de retorno preditivo enviava o gerenciador de fragmentos para um estado indefinido e até mesmo mostrava o fragmento errado. (If82e2, b/338624457)
- Foi corrigida uma UninitializedPropertyAccessExceptionemAndroidFragmentao trocar dinamicamente a classe que sua instânciaAndroidFragmentestá usando. (I12dea).
Versão 1.8.3
4 de setembro de 2024
Lançamento de androidx.fragment:fragment-*:1.8.3. A versão 1.8.3 contém estas confirmações.
Correções de bugs
- O FragmentManageragora considera corretamente as operações pendentes ao processar o gesto de volta preditiva. Isso garante que fazer um retorno do sistema não cause mais umIndexOutOfBoundsException. (I9ba32, b/342316801)
- AndroidFragmentnão falha mais se for adicionado à composição enquanto o estado da atividade/fragmento que o contém já estiver salvo. (I985e9, b/356643968).
Versão 1.8.2
24 de julho de 2024
Lançamento de androidx.fragment:fragment-*:1.8.2. A versão 1.8.2 contém estas confirmações.
Correções de bugs
- AndroidFragmentagora processa corretamente os casos em que o fragmento pai é colocado na backstack de fragmentos, evitando problemas de "Nenhuma visualização encontrada para o ID" ao voltar para esse fragmento. (I94608)
- Os fragmentos adicionados pelo método FragmentTransaction.addque usa umViewGroupagora aguardamonContainerAvailableantes de passar paraonStart(). Isso afeta os usuários dessa API, comoAndroidFragment, que agora espera que oAndroidFragmententre novamente na composição antes de movê-lo poronStart(). (I94608)
Versão 1.8.1
26 de junho de 2024
Lançamento de androidx.fragment:fragment-*:1.8.1. A versão 1.8.1 contém estas confirmações.
Correções de bugs
- Correção de um problema em que fragmentos sem um contêiner eram imediatamente DESTROYEDao iniciar um gesto de retorno preditivo. Agora, eles são mantidos no estadoCREATEDaté que o gesto seja concluído. (If6b83, b/345244539)
Versão 1.8.0
12 de junho de 2024
Lançamento de androidx.fragment:fragment-*:1.8.0. A versão 1.8.0 contém estas confirmações.
Mudanças importantes desde a versão 1.7.0
- O artefato fragment-composeagora contém umAndroidFragmentComposableque permite adicionar fragmentos à hierarquia do Compose usando o nome da classe do fragmento. Ele processa automaticamente o salvamento e a restauração do estado do fragmento. Isso deve ser usado como uma substituição direta da abordagem recomendada anteriormente de usarAndroidViewBindingpara inflar um fragmento.
- O callback onBackStackChangeCancelledna interfaceOnBackStackChangedListenerdoFragmentManageragora é acionado como parte da execução de operações emFragmentManager, aproximando-o do tempo do callbackonBackStackChangeCommitted.
Versão 1.8.0-rc01
29 de maio de 2024
Lançamento de androidx.fragment:fragment-*:1.8.0-rc01. A versão 1.8.0-rc01 contém estas confirmações.
Correções de bugs
- O callback onBackStackChangeCancelledna interfaceFragmentManagers OnBackStackChangedListeneragora é disparado como parte da execução de operações emFragmentManager, aproximando-o do tempo do callbackonBackStackChangeCommitted. (I5ebfb, b/332916112).
Versão 1.8.0-beta01
14 de maio de 2024
Lançamento de androidx.fragment:fragment-*:1.8.0-beta01. A versão 1.8.0-beta01 contém estas confirmações.
Correções de bugs
- Do Fragment 1.7.1: agora, a volta preditiva só será executada para transações em que todos os fragmentos têm um Animator ou uma transição AndroidX pesquisável. Isso corrige um problema em que o cancelamento de uma transação parcialmente pesquisável causava uma tela preta. (I43037, b/339169168).
Versão 1.8.0-alpha02
17 de abril de 2024
Lançamento de androidx.fragment:fragment-*:1.8.0-alpha02. A versão 1.8.0-alpha02 contém estas confirmações.
Correções de bugs
- Do Fragment 1.7.0-rc02: adição de registros para indicar por que a definição de umsharedElementsem outras transições não será executada. (Iec48e).
- Do Fragment 1.7.0-rc02: foi corrigido um bug em que, se um elemento compartilhado não pesquisável fosse adicionado a transações em que todas as outras transições eram pesquisáveis, haveria uma falha. Agora a transação será considerada corretamente como não pesquisável. (I18ccd).
Versão 1.8.0-alpha01
3 de abril de 2024
Lançamento de androidx.fragment:fragment-*:1.8.0-alpha01. A versão 1.8.0-alpha01 contém estas confirmações.
Novos recursos
- O novo AndroidFragmentComposablepermite adicionar fragmentos à hierarquia do Compose usando o nome da classe de fragmento. Ele processa automaticamente o salvamento e a restauração do estado do fragmento. Isso pode ser usado como uma substituição direta para oComposabledo AndroidViewBinding (b/312895363, Icf841).
Mudanças na documentação
- Atualização da documentação das APIs OnBackStackChangedListenerpara indicar quando elas são chamadas e como devem ser usadas. (I0bfd9).
Atualização de dependências
- O Fragment agora depende do Profile Installer 1.3.1.
Versão 1.7
Versão 1.7.1
14 de maio de 2024
Lançamento de androidx.fragment:fragment-*:1.7.1. A versão 1.7.1 contém estas confirmações.
Correções de bugs
- A volta preditiva agora só será executada para transações em que todos os fragmentos têm um Animator ou uma transição Androidx pesquisável. Isso corrige um problema em que o cancelamento de uma transação parcialmente pesquisável causava uma tela em branco. (I43037, b/339169168).
Versão 1.7.0
1º de maio de 2024
Lançamento de androidx.fragment:fragment-*:1.7.0. A versão 1.7.0 contém estas confirmações.
Suporte ao gesto de volta preditivo
- Os fragmentos agora oferecem suporte à volta preditiva no app ao usar Animatorou AndroidX Transition 1.5.0. Isso permite que os usuários usem o gesto de retorno para ver o fragmento anterior buscando seu Animator/Transition antes de decidir confirmar a transação concluindo o gesto ou cancelando.
| Sistema de transição | Recurso XML | Compatível com a volta preditiva | 
|---|---|---|
| Animation | R.anim | Não | 
| Animator | R.animator | Sim | 
| Framework Transition | R.transition | Não | 
| AndroidX Transitioncom Transition 1.4.1 ou versões anteriores | R.transition | Não | 
| AndroidX Transitioncom Transition 1.5.0 | R.transition | Sim | 
Se você encontrar problemas com o suporte à volta preditiva em fragmentos depois de ativar o gesto de volta preditiva, registre um problema no Fragment com um projeto de exemplo que reproduza o problema. Para desativar a volta preditiva, use FragmentManager.enabledPredictiveBack(false) no onCreate() da sua atividade.
O FragmentManager.OnBackStackChangedListener() agora fornece onBackStackChangeProgressed() e onBackStackChangeCancelled() para receber o progresso de volta preditiva e eventos cancelados, respectivamente.
Artefato do Fragment Compose
Um novo artefato fragment-compose foi criado para oferecer suporte a apps que estão em processo de migração de uma arquitetura baseada em Fragment para uma arquitetura totalmente baseada em Compose.
O primeiro recurso disponível nesse novo artefato é um método de extensão content em Fragment que busca facilitar o uso do Compose para a interface de um Fragment individual criando um ComposeView para você e definindo o ViewCompositionStrategy correto.
  class ExampleFragment : Fragment() {
      override fun onCreateView(
          inflater: LayoutInflater,
          container: ViewGroup?,
          savedInstanceState: Bundle?
      ) = content {
          // Write your @Composable content here
          val viewModel: ExampleViewModel = viewModel()
          // or extract it into a separate, testable method
          ExampleComposable(viewModel)
      }
  }
Versão 1.7.0-rc02
17 de abril de 2024
Lançamento de androidx.fragment:fragment-*:1.7.0-rc02. A versão 1.7.0-rc02 contém estas confirmações.
Correções de bugs
- Adição de registros para indicar por que a definição de um sharedElementsem outras transições não será executada. (Iec48e).
- Correção de um bug em que, se um elemento compartilhado não pesquisável fosse adicionado a uma transação em que todas as outras transições eram pesquisáveis, haveria uma falha. Agora a transação será considerada corretamente como não pesquisável. (I18ccd).
Versão 1.7.0-rc01
3 de abril de 2024
Lançamento de androidx.fragment:fragment-*:1.7.0-rc01. A versão 1.7.0-rc01 contém estas confirmações.
Atualização de dependências
- O Fragment agora depende do Profile Installer 1.3.1.
Versão 1.7.0-beta01
20 de março de 2024
Lançamento de androidx.fragment:fragment-*:1.7.0-beta01. A versão 1.7.0-beta01 contém estas confirmações.
Mudanças na API
- Agora, FragmentHostCallbacké escrito em Kotlin para que a nulidade do tipo genérico do host corresponda à nulidade do tipo de retorno deonGetHost(). (I40af5).
Correções de bugs
- Foi corrigido um problema em que, ao confirmar um gesto de retorno preditivo em um fragmento que não está em um contêiner, esse fragmento nunca era destruído. O fragmento será movido imediatamente para o estado final. (Ida0d9).
- Foi corrigido um problema nos Fragments em que interromper as transições de entrada com um gesto de retorno preditivo destruía a visualização de entrada e deixava uma tela em branco. (Id3f22, b/319531491)
Versão 1.7.0-alpha10
7 de fevereiro de 2024
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha10. A versão 1.7.0-alpha10 contém estas confirmações.
Correções de bugs
- Foi corrigido o problema conhecido na versão anterior do Fragment em que, ao usar o suporte de volta preditiva do Fragment para Animatorou transição do AndroidX, os Fragments geravam umNullPointerExceptiondehandleOnBackProgressedse nenhumFragmentManager.OnBackStackChangedListenerfosse adicionado usandoaddOnBackStackChangedListener. (I7c835)
Versão 1.7.0-alpha09
24 de janeiro de 2024
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha09. A versão 1.7.0-alpha09 contém estas confirmações.
Artefato do Fragment Compose
Um novo artefato fragment-compose foi criado para oferecer suporte a apps que estão em processo de migração de uma arquitetura baseada em Fragment para uma arquitetura totalmente baseada em Compose.
O primeiro recurso disponível nesse novo artefato é um método de extensão content em Fragment que busca facilitar o uso do Compose para a interface de um Fragment individual criando um ComposeView para você e definindo o ViewCompositionStrategy correto. (561cb7, b/258046948)
class ExampleFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = content {
        // Write your @Composable content here
        val viewModel: ExampleViewModel = viewModel()
        // or extract it into a separate, testable method
        ExampleComposable(viewModel)
    }
}
Novos recursos
- O FragmentManager.OnBackStackChangedListener()agora forneceonBackStackChangeProgressed()eonBackStackChangeCancelled()para receber o progresso de volta preditiva e eventos cancelados, respectivamente. (214b87).
Problema conhecido
- Ao usar o suporte de volta preditiva do Fragment para Animatorou transição do AndroidX, os fragmentos vão gerar umNullPointerExceptiondehandleOnBackProgressedse nenhumFragmentManager.OnBackStackChangedListenertiver sido adicionado usandoaddOnBackStackChangedListener. Adicionar um listener manualmente vai evitar a falha. Uma correção estará disponível na próxima versão do Fragments.
Versão 1.7.0-alpha08
10 de janeiro de 2024
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha08. A versão 1.7.0-alpha08 contém estas confirmações.
Limpar
- Removemos a solução alternativa para a biblioteca de transição, que foi corrigida na Transição 1.5.0-alpha06. (I04356)
Versão 1.7.0-alpha07
29 de novembro de 2023
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha07. A versão 1.7.0-alpha07 contém estas confirmações.
Correções de bugs
- Foi corrigida uma NullPointerExceptioncausada pela definição de uma transição de elemento compartilhado e pela falha ao definir uma enter/exitTransition também. (I8472b).
- Do Fragment 1.6.2: quando o fragmento de umFragmentContainerViewé inflado, os estados dele, comoFragmentManager, host e ID, agora ficam acessíveis no callbackonInflate. (I1e44c, b/307427423)
- Do Fragment 1.6.2: ao usarclearBackStackpara remover um conjunto de fragmentos, qualquerViewModelaninhado do fragmento agora será limpo quando osViewModelsdo fragmento pai forem limpos. (I6d83c, b/296173018)
Versão 1.7.0-alpha06
4 de outubro de 2023
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha06. A versão 1.7.0-alpha06 contém estas confirmações.
Atualização de dependências
- Os fragmentos foram atualizados para depender da nova API animateToStartadicionada na Transição1.5.0-alpha04.
Versão 1.7.0-alpha05
20 de setembro de 2023
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha05. A versão 1.7.0-alpha05 contém estas confirmações.
Novos recursos
- Os fragmentos agora oferecem suporte à volta preditiva ao usar as transições do AndroidX. Isso permite usar o gesto de retorno para buscar o fragmento anterior com sua transição personalizada do AndroidX antes de decidir confirmar ou cancelar a transação com o gesto concluído. Você precisa depender da versão Transition 1.5.0-alpha03para ativar esse recurso. (Ib49b4, b/285175724).
Problemas conhecidos
- No momento, há um problema em que, depois de cancelar um gesto de retorno com uma transição uma vez, na próxima vez que você iniciar o gesto de retorno, a transição não será executada, causando uma tela em branco. Isso pode ser causado por um problema na biblioteca de transição. (b/300157785). Se você encontrar esse problema, registre um problema no Fragment com um projeto de exemplo que reproduza o problema. Para desativar a volta preditiva, use FragmentManager.enabledPredictiveBack(false)noonCreate()da sua atividade.
Versão 1.7.0-alpha04
6 de setembro de 2023
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha04. A versão 1.7.0-alpha04 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema ao cancelar um gesto de retorno preditivo em que os fragmentos não conseguiam chegar ao estado correto do ciclo de vida. (I7cffe, b/297379023)
- Correção de uma regressão em que as animações podiam ser executadas com transições. (I59f36).
- Correção de um problema ao usar a volta preditiva com fragmentos em que tentar voltar duas vezes em rápida sucessão no penúltimo fragmento da pilha de retorno causava uma falha. (Ifa1a4).
Versão 1.7.0-alpha03
23 de agosto de 2023
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha03. A versão 1.7.0-alpha03 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema com Fragments ao usar a volta preditiva que fazia com que o primeiro fragmento na pilha de retorno do gerenciador de fragmentos fosse ignorado e a atividade fosse concluída ao usar a volta do sistema pela navegação de três botões ou pelo gesto de volta preditiva. (I0664b, b/295231788)
Versão 1.7.0-alpha02
9 de agosto de 2023
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha02. A versão 1.7.0-alpha02 contém estas confirmações.
Correções de bugs
- Ao usar fragmentos com gestos de volta preditiva da API 34, se você estiver usando um sistema de transição que não oferece suporte à busca (Animations,Transitions) ou nenhuma transição, os fragmentos vão aguardar até que o gesto seja concluído antes de executar a ação de retorno. (I8100c).
Versão 1.7.0-alpha01
7 de junho de 2023
Lançamento de androidx.fragment:fragment-*:1.7.0-alpha01. Esta versão foi desenvolvida em uma ramificação interna.
Novos recursos
- Os fragmentos agora oferecem suporte à volta preditiva no app ao usar Animator. Isso permite usar o gesto de retorno para ver o fragmento anterior com seu Animator personalizado antes de decidir confirmar ou cancelar a transação com o gesto concluído. Também é possível desativar esse novo comportamento usando oenablePredictiveBack()experimental e transmitindofalse.
Versão 1.6
Versão 1.6.2
1º de novembro de 2023
Lançamento de androidx.fragment:fragment-*:1.6.2. A versão 1.6.2 contém estas confirmações.
Correções de bugs
- Quando o Fragment de um FragmentContainerViewé inflado, os estados dele, comoFragmentManager, Host e ID, agora ficam acessíveis no callbackonInflate. (I1e44c, b/307427423)
- Ao usar clearBackStackpara remover um conjunto de fragmentos, qualquerViewModelde fragmento aninhado agora será limpo quando osViewModelsdo fragmento pai forem limpos. (I6d83c, b/296173018)
Versão 1.6.1
26 de julho de 2023
Lançamento de androidx.fragment:fragment-*:1.6.1. A versão 1.6.1 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que o estado salvo armazenado quando a atividade era interrompida, mas não destruída, era armazenado em cache incorretamente mesmo depois que a instância do fragmento era movida de volta para o estado RESUMED. Isso faria com que o estado em cache fosse reutilizado se a instância do fragmento estivesse na pilha de retorno ao usar a API de várias pilhas de retorno para salvar e restaurar esse fragmento. (I71288, b/246289075).
Atualização de dependências
- O Fragment agora depende da Activity 1.7.2. Isso corrige um problema em que os usuários do Kotlin não podiam estender ComponentDialogsem uma dependência explícita da atividade. (b/287509323)
Versão 1.6.0
7 de junho de 2023
Lançamento de androidx.fragment:fragment-*:1.6.0. A versão 1.6.0 contém estas confirmações.
Mudanças importantes desde a versão 1.5.0
- O estado salvo dos Fragments foi totalmente dividido entre o estado da biblioteca particular (classesParcelablepersonalizadas) e o estado fornecido pelo desenvolvedor, que agora é sempre armazenado em umBundleque permite determinar exatamente a origem do estado de um fragmento
- A interface FragmentManager.OnBackStackChangedListenerfoi expandida com dois callbacks adicionais deonBackStackChangeStartedeonBackStackChangeCommitted, que são chamados com cadaFragmentlogo antes de serem adicionados/removidos da pilha de retorno do fragmento e logo após a confirmação da transação, respectivamente.
- FragmentStrictModeadicionou uma nova- WrongNestedHierarchyViolationque detecta quando um fragmento filho está aninhado dentro da hierarquia de visualização do elemento pai, mas não foi adicionado ao- childFragmentManagerdo pai
- As APIs FragmenteFragmentManagerque usam umaIntentou umaIntentSenderagora recebem a anotação@NonNullcorretamente para evitar a transmissão de um valor nulo, já que ele sempre causa uma falha nas respectivas APIs do framework do Android que esses métodos chamam
- O DialogFragmentagora oferece acesso aoComponentDialogsubjacente pela APIrequireComponentDialog().
- O Fragment agora depende do Lifecycle 2.6.1.
- O Fragment agora depende do SavedState 1.2.1.
- O Fragment agora depende do ProfileInstaller 1.3.0.
- O artefato - fragment-testing-manifestsepara as entradas do manifesto dos outros componentes do teste de fragmentos. Isso significa que é possível usar:- debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z") androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")- Isso evita conflitos devido a um desvio da versão entre - fragment-testinge- androidx.test.
Versão 1.6.0-rc01
10 de maio de 2023
Lançamento de androidx.fragment:fragment-*:1.6.0-rc01. A versão 1.6.0-rc01 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema que fazia com que ActivityResults fossem enviados com o código de solicitação incorreto quando várias solicitaçõesstartActivityForResulteram feitas consecutivamente. (If0b9d, b/249519359).
- Correção de um problema em que os callbacks onBackStackChangeListenereram enviados para transações que não mudavam a backstack se fossem misturadas com transações que mudavam (I0eb5c, b/279306628).
Versão 1.6.0-beta01
19 de abril de 2023
Lançamento de androidx.fragment:fragment-*:1.6.0-beta01. A versão 1.6.0-beta01 contém estas confirmações.
Correções de bugs
- Usar postponeEnterTransitioncom um tempo limite e substituir o fragmento adiado não resulta mais no vazamento dele. (I2ec7d, b/276375110).
- Os novos callbacks onBackStackChangeStartedeonBackStackChangeCommittedagora só vão despachar um fragmento uma única vez, mesmo que várias transações contenham o mesmo fragmento. (Ic6b69).
Versão 1.6.0-alpha09
5 de abril de 2023
Lançamento de androidx.fragment:fragment-*:1.6.0-alpha09. A versão 1.6.0-alpha09 contém estas confirmações.
Mudanças na API
- O DialogFragmentagora oferece acesso aoComponentDialogsubjacente pela APIrequireComponentDialog(). (I022e3, b/234274777).
- As APIs de fragmento commitNow(),executePendingTransactions()epopBackStackImmediate()foram anotadas com@MainThread. Isso significa que agora elas vão gerar erros de build quando não forem chamadas da linha de execução principal, em vez de esperar para falhar no tempo de execução. (Ic9665, b/236538905).
Correções de bugs
- Correção de um bug no FragmentManagerem que salvar e restaurar no mesmo frame podia causar uma falha. (Ib36af, b/246519668).
- Os callbacks OnBackStackChangedListeneronBackStackChangeStartedeonBackStackChangeCommittedagora só são executados quando a pilha de retornoFragmentManageré alterada. (I66055, b/274788957)
Versão 1.6.0-alpha08
22 de março de 2023
Lançamento de androidx.fragment:fragment-*:1.6.0-alpha08. A versão 1.6.0-alpha08 contém estas confirmações.
Mudança de comportamento
- O tempo da callback OnBackStackChangedListener.onBackStackChangeCommitedfoi ajustado para ser executado antes das operações de fragmento. Isso garante que o callback nunca receba um fragmento desconectado. (I66a76, b/273568280).
Correções de bugs
- Do Fragment 1.5.6: foi corrigido um problema em que chamarclearFragmentResultListenerdentro de umsetFragmentResultListenernão funcionava se oLifecyclejá fosseSTARTEDe um resultado já estivesse disponível. (If7458).
Atualizações de dependência
- O Fragment agora depende do Lifecycle 2.6.1. (586fe7)
- O Fragment agora depende do SavedState 1.2.1. (078e4e)
- O Fragment agora depende do ProfileInstaller 1.3.0. (3fc05b).
Versão 1.6.0-alpha07
8 de março de 2023
Lançamento de androidx.fragment:fragment-*:1.6.0-alpha07. A versão 1.6.0-alpha07 contém estas confirmações.
Correções de bugs
- Do Fragment 1.5.6: corrigido um problema em que a remoção de qualquer Fragment, com ou sem itens de menu adicionados, invalidava o menu da atividade. (50f098, b/244336571)
Versão 1.6.0-alpha06
22 de fevereiro de 2023
Lançamento de androidx.fragment:fragment-*:1.6.0-alpha06. A versão 1.6.0-alpha06 contém estas confirmações.
Mudança de comportamento
- O novo callback onBackStackChangedStartednoonBackStackChangedListenerdoFragmentManageragora será executado antes que os fragmentos comecem a mudar para os estados de destino. (I34726).
Versão 1.6.0-alpha05
8 de fevereiro de 2023
Lançamento de androidx.fragment:fragment-*:1.6.0-alpha05. A versão 1.6.0-alpha05 contém estas confirmações.
Novos recursos
- A interface FragmentManager.OnBackStackChagnedListeneragora oferece dois callbacks extras, oonBackStackChangeStartede oonBackStackChangeCommitted, que permitem ter mais informações e controle quando ocorrerem mudanças na backstack noFragmentManager(Ib7ce5, b/238686802).
Mudanças na API
- As APIs FragmenteFragmentManagerque usam umaIntentou umaIntentSenderagora recebem a anotação@NonNullcorretamente para evitar a transmissão de um valor nulo, já que ele sempre causa uma falha nas respectivas APIs do framework do Android que esses métodos chamam (I06fd4).
Versão 1.6.0-alpha04
7 de dezembro de 2022
Lançamento de androidx.fragment:fragment-*:1.6.0-alpha04. A versão 1.6.0-alpha04 contém estas confirmações.
Novos recursos
- FragmentStrictModeadicionou uma nova- WrongNestedHierarchyViolationque detecta quando um fragmento filho está aninhado dentro da hierarquia de visualização do elemento pai, mas não foi adicionado ao- childFragmentManagerdo pai (I72521, b/249299268).
Mudanças de comportamento
- Agora, os fragmentos restauram o estado SavedStateRegistryantes deonAttach(), garantindo que ele esteja disponível em todos os métodos de ciclo de vida ascendente (I1e2b1).
Mudanças na API
- O artefato fragment-testing-manifestsepara as entradas do manifesto dos outros componentes do teste de fragmentos. Isso significa que é possível usar:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
Isso evita conflitos devido a um desvio da versão entre fragment-testing e androidx.test (I8e534, b/128612536).
Correções de bugs
- Do Fragment 1.5.5: os fragmentos não vão mais salvar incorretamente o estadoViewModelcomo parte do estado salvo do registro de visualização (I10d2b, b/253546214).
Versão 1.6.0-alpha03
5 de outubro de 2022
Lançamento de androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 e androidx.fragment:fragment-testing:1.6.0-alpha03. A versão 1.6.0-alpha03 contém estas confirmações.
Mudanças na API
- As classes que estendem DialogFragmentagora precisam chamar Super nas substituições deonDismiss()(I14798, b/238928865).
Correções de bugs
- Foram corrigidas as regressões causadas pela integração das novas interfaces de callback do provedor (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) para garantir que os fragmentos sempre recebam os callbacks adequados (I9b380, I34581, I8dfe6, b/242570955, If9d6b, Id0096, I690b3, I2cba2).
Versão 1.6.0-alpha02
24 de agosto de 2022
Lançamento de androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 e androidx.fragment:fragment-testing:1.6.0-alpha02. A versão 1.6.0-alpha02 contém estas confirmações.
Correções de bugs
- Do Fragment 1.5.2: foi corrigido um problema em que a execução de uma transaçãopopBackStack()ereplace()ao mesmo tempo fazia com que os fragmentos de saída executassemAnimation/Animatorerrados (Ib1c07, b/214835303).
Versão 1.6.0-alpha01
27 de julho de 2022
Lançamento de androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 e androidx.fragment:fragment-testing:1.6.0-alpha01. A versão 1.6.0-alpha01 contém estas confirmações.
Mudanças de comportamento
- O estado salvo dos Fragments foi totalmente dividido entre o estado da biblioteca particular (classesParcelablepersonalizadas) e o estado fornecido pelo desenvolvedor, que agora é sempre armazenado em umBundleque permite determinar exatamente a origem do estado de um fragmento (b/207158202).
Correções de bugs
- Do Fragment 1.5.1: foi corrigida uma regressão noDialogFragmentCallbacksDetectorem que o uso da versão do lint empacotada com o AGP 7.4 fazia com que ele falhasse (b/237567009).
Atualização de dependências
- Do Fragment 1.5.1: a biblioteca Fragment agora depende do Lifecycle2.5.1(Id204c).
- Do Fragment 1.5.1: a biblioteca Fragment agora depende da Activity1.5.1(I10f07).
Versão 1.5
Versão 1.5.7
19 de abril de 2023
Lançamento de androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 e androidx.fragment:fragment-testing:1.5.7. A versão 1.5.7 contém estas confirmações.
Correções de bugs
- Usar postponeEnterTransitioncom um tempo limite e substituir o fragmento adiado não resulta mais no vazamento dele. (I2ec7d, b/276375110).
Versão 1.5.6
22 de março de 2023
Lançamento de androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 e androidx.fragment:fragment-testing:1.5.6. A versão 1.5.6 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que a remoção de qualquer fragmento, com ou sem itens de menu adicionados, invalidava o menu da atividade. (50f098, b/244336571)
- Correção de um problema em que chamar clearFragmentResultListenerdentro de umsetFragmentResultListenernão funcionava se oLifecyclejá fosseSTARTEDe um resultado já estivesse disponível. (If7458).
Versão 1.5.5
7 de dezembro de 2022
Lançamento de androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 e androidx.fragment:fragment-testing:1.5.5. A versão 1.5.5 contém estas confirmações.
Correções de bugs
- Os fragmentos não vão mais salvar incorretamente o estado ViewModelcomo parte do estado salvo do registro de visualização (I10d2b, b/253546214).
Versão 1.5.4
24 de outubro de 2022
Lançamento de androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 e androidx.fragment:fragment-testing:1.5.4. A versão 1.5.4 contém estas confirmações.
Correções de bugs
- Foi corrigido um erro em que o uso de um FragmentControllerpersonalizado com um host que não implementa uma interface de callback do provedor (OnConfigurationChangedProvider,OnMultiWindowModeChangedProvider,OnTrimMemoryProvider,OnPictureInPictureModeChangedProvider) e a chamada da função de envio descontinuada falhavam ao enviar para fragmentos filhos (I9b380).
Versão 1.5.3
21 de setembro de 2022
Lançamento de androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 e androidx.fragment:fragment-testing:1.5.3. A versão 1.5.3 contém estas confirmações.
Correções de bugs
- Foi corrigido um erro que fazia com que os fragmentos na pilha de retorno recebessem callbacks onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()eonConfigurationChanged()(I34581, I8dfe6, b/242570955).
- Os fragmentos filhos aninhados não vão mais receber vários callbacks onMultiWindowModeChanged(),onPictureInPictureModeChanged(),onLowMemory()ouonConfigurationChanged()(I690b3, Id0096, If9d6b, I2cba2).
Versão 1.5.2
10 de agosto de 2022
Lançamento de androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 e androidx.fragment:fragment-testing:1.5.2. A versão 1.5.2 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que a execução de uma transação popBackStack()e umareplace()ao mesmo tempo fazia com que os fragmentos de saída executassemAnimation/Animatorerrados (Ib1c07, b/214835303).
Versão 1.5.1
27 de julho de 2022
Lançamento de androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 e androidx.fragment:fragment-testing:1.5.1. A versão 1.5.1 contém estas confirmações.
Correções de bugs
- Foi corrigida uma regressão no DialogFragmentCallbacksDetectorem que o uso da versão do lint empacotada com o AGP 7.4 fazia com que ele falhasse (b/237567009).
Atualização de dependências
- A biblioteca Fragment agora depende do Lifecycle 2.5.1(Id204c).
- A biblioteca Fragment agora depende da Activity 1.5.1(I10f07).
Versão 1.5.0
29 de junho de 2022
Lançamento de androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 e androidx.fragment:fragment-testing:1.5.0. A versão 1.5.0 contém estas confirmações.
Mudanças importantes desde a versão 1.4.0
- Integração de CreationExtras: a Fragmentagora pode fornecer uma interfaceViewModelProvider.Factorysem estado usando a classeCreationExtrasdo Lifecycle2.5.0.
- Integração da caixa de diálogo do componente: DialogFragmentagora usaComponentDialogusando a Activity1.5.0como caixa de diálogo padrão retornada poronCreateDialog().
- Refatoração do estado de instância salvo: os fragmentos começaram a mudar a forma como salvam o estado da instância. Isso é um esforço para ajudar a identificar adequadamente qual estado foi salvo no fragmento e a origem dele. As mudanças atuais incluem o seguinte:
- A classe FragmentManageragora armazena o estado de instância salvo em umBundleem vez de diretamente em umParcelablepersonalizado.
- Os resultados definidos pelas Fragment Result APIsque ainda não foram entregues são salvos separadamente do estado interno daFragmentManager.
- O estado associado a cada fragmento individual agora é salvo separadamente do estado interno da classe FragmentManager. Assim, você pode correlacionar a quantidade de estados salvos associados a um fragmento individual com os IDs exclusivos presentes na geração de registros de depuração deFragment.
 
- A classe 
Outras mudanças
- FragmentStrictModeagora possibilita que fragmentos particulares de terceiros ignorem penalidades de violações específicas usando- allowViolation()com o nome da classe.
- O uso das APIs Fragment para oferecer um menu à ActionBarda atividade foi descontinuado. As APIsMenuHosteMenuProvideradicionadas na Activity1.4.0fornecem uma superfície de API equivalente testável e com reconhecimento do ciclo de vida que os fragmentos precisam usar.
Versão 1.5.0-rc01
11 de maio de 2022
Lançamento de androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 e androidx.fragment:fragment-testing:1.5.0-rc01. A versão 1.5.0-rc01 contém estas confirmações.
Refatoração de estado da instância salva
- O estado associado a cada fragmento individual agora é salvo separadamente do estado interno da classe FragmentManager. Assim, você pode correlacionar a quantidade de estados salvos associados a um fragmento individual com os IDs exclusivos presentes na geração de registros de depuração de fragmentos (a153e0, b/207158202).
Versão 1.5.0-beta01
20 de abril de 2022
Lançamento de androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 e androidx.fragment:fragment-testing:1.5.0-beta01. A versão 1.5.0-beta01 contém estas confirmações.
Mudanças na API
- A classe DialogFragmentadicionou um novo métododismissNowque usacommitNowpara oferecer paridade com a funçãoshowNow. Isso não faz com que a classeDialogseja dispensada imediatamente, apenas que ela atualize o estado daFragmentManagerde forma síncrona (I15c36, b/72644830).
Refatoração de estado da instância salva
- A classe FragmentManageragora armazena o estado de instância salvo em umBundleem vez de diretamente em umParcelablepersonalizado. Essa é a primeira etapa para oferecer mais transparência sobre o que realmente está sendo salvo pelos fragmentos (I93807, b/207158202).
- Os resultados definidos pelas APIs Fragment Result que ainda não foram entregues são salvos separadamente do estado interno da FragmentManager. Isso permite mais transparência sobre os resultados que estão sendo salvos como parte do estado salvo da instância (I6ea12, b/207158202).
Versão 1.5.0-alpha05
6 de abril de 2022
Lançamento de androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 e androidx.fragment:fragment-testing:1.5.0-alpha05. A versão 1.5.0-alpha05 contém estas confirmações.
Mudanças na API
- O uso do setHasOptionsMenu()doFragmentfoi descontinuado. Para gerenciar menus e os itens deles, as novas APIs de menu precisam ser usadas de acordo com as notas da versão do Fragment1.5.0-alpha04(I7b4b4, b/226438239).
Versão 1.5.0-alpha04
23 de março de 2022
Lançamento de androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 e androidx.fragment:fragment-testing:1.5.0-alpha04. A versão 1.5.0-alpha04 contém estas confirmações.
Mudanças na API
- As APIs Fragment que oferecem um menu à ActionBarda atividade foram descontinuadas por fazerem acoplamento rígido entre o fragmento e a atividade, o que as impede de serem testadas de forma isolada. As APIsMenuHosteMenuProvideradicionadas na Activity1.4.0-alpha01fornecem uma superfície de API equivalente testável e com reconhecimento do ciclo de vida que os fragmentos precisam usar (I50a59, I20758).
Correções de bugs
- A SavedStateViewFactoryagora oferece suporte ao uso deCreationExtrasmesmo quando inicializada com umSavedStateRegistryOwner. Se extras forem fornecidos, os argumentos inicializados serão ignorados (I6c43b, b/224844583).
Versão 1.5.0-alpha03
23 de fevereiro de 2022
Lançamento de androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 e androidx.fragment:fragment-testing:1.5.0-alpha03. A versão 1.5.0-alpha03 contém estas confirmações.
Mudanças na API
- Agora é possível transmitir CreationExtraspara as funçõesby viewModels()eby activityViewModels()(Ibefe7, b/217601110).
Mudanças de comportamento
- DialogFragmentagora usa- ComponentDialogcomo a caixa de diálogo padrão retornada por- onCreateDialog()(If3784, b/217618170).
Versão 1.5.0-alpha02
9 de fevereiro de 2022
Lançamento de androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 e androidx.fragment:fragment-testing:1.5.0-alpha02. A versão 1.5.0-alpha02 contém estas confirmações.
Novos recursos
- FragmentStrictModeagora possibilita que fragmentos particulares de terceiros ignorem penalidades de violações específicas usando- allowViolation()com o nome da classe (I8f678).
Versão 1.5.0-alpha01
26 de janeiro de 2022
Lançamento de androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 e androidx.fragment:fragment-testing:1.5.0-alpha01. A versão 1.5.0-alpha01 contém estas confirmações.
Novos recursos
- Fragmentagora se integra ao ViewModel CreationExtras, introduzido como parte do Lifecycle- 2.5.0-alpha01(I3060b, b/207012585).
Correções de bugs
- Do Fragment 1.4.1:FragmentContainerViewnão gera mais uma exceção de estado ilegal quando os IDs de visualização gerados com base em XML têm valores negativos (Ic185b, b/213086140).
- Do Fragment 1.4.1: ao usar uma lambdaownerProducerpersonalizada com a função lenta deby viewModels(), ela usa adefaultViewModelProviderFactorydesse proprietário se umaViewModelProvider.Factorypersonalizada não for fornecida, em vez de sempre usar a fábrica do fragmento (I56170, b/214106513).
- Uma falha ao acessar um ViewModelpela primeira vez de um callbackregisterForActivityResult()de umFragmentfoi corrigida (Iea2b3).
Versão 1.4
Versão 1.4.1
26 de janeiro de 2022
Lançamento de androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 e androidx.fragment:fragment-testing:1.4.1. A versão 1.4.1 contém estas confirmações.
Correções de bugs
- FragmentContainerViewnão gera mais uma exceção de estado ilegal quando os IDs de visualização gerados com base em XML têm valores negativos (Ic185b, b/213086140).
- Ao usar uma lambda ownerProducerpersonalizada com a função lenta deby viewModels(), ela usa adefaultViewModelProviderFactorydesse proprietário se umaViewModelProvider.Factorypersonalizada não for fornecida, em vez de sempre usar a fábrica do fragmento (I56170, b/214106513).
Versão 1.4.0
17 de novembro de 2021
Lançamento de androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 e androidx.fragment:fragment-testing:1.4.0. A versão 1.4.0 contém estas confirmações.
Mudanças importantes desde a versão 1.3.0
- As APIs FragmentStrictModefornecem verificações no momento da execução para checar se o app ou as bibliotecas de que você depende não estão chamando APIs de fragmentos descontinuadas. Quando uma violação é detectada, você pode imprimir uma mensagem de registro, acionar seu listener personalizado ou causar uma falha no app. AFragmentStrictMode.Policyque controla quais verificações são ativadas e quais "penalidades" são acionadas pode ser definida em umFragmentManagerusando o novo métodosetStrictModePolicy(). A política se aplica a esseFragmentManagere, de forma transitória, aos gerenciadores de fragmentos filhos que não definem a própria política exclusiva Consulte StrictMode para fragmentos.
- A - FragmentContainerViewagora oferece um método- getFragment()que retorna o fragmento que foi adicionado mais recentemente ao contêiner. Esse método usa a mesma lógica de- findFragmentById()com o ID da- FragmentContainerView, mas permite encadear a chamada- val navController = binding.container.getFragment<NavHostFragment>().navController
- O - FragmentScenarioagora implementa o- Closeable, permitindo o uso com o método- usedo Kotlin ou com try-with-resources
- Foi adicionado o - FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}para especificar se a animação padrão de transição de atividades do tema usado será ativada na transição de fragmentos
- A API experimental de - FragmentManager.enableNewStateManager(boolean)foi removida, e o novo gerenciador de estado agora é a única opção disponível
Várias backstacks
O FragmentManager mantém uma backstack composta de transações de fragmentos que usaram addToBackStack(). Isso permite remover essas transações e retornar ao estado anterior usando os mecanismos para salvar o estado com fragmentos e fazer com que os fragmentos restaurem o estado corretamente.
Esta versão expande esses mecanismos fornecendo três novas APIs do FragmentManager: saveBackStack(String name), restoreBackStack(String name) e clearBackStack(String name). Essas APIs usam o mesmo name de addToBackStack() para salvar o estado da FragmentTransaction e o estado de cada fragmento adicionado a essas transações. Também permitem restaurar as transações e os fragmentos com o estado delas. Assim, é possível "alternar" de fato entre várias backstacks, salvando a atual e restaurando uma salva anteriormente.
O saveBackStack() opera da mesma forma que popBackStack(): ele é assíncrono e faz com que todas as transações de fragmento voltem a esse nome específico para serem revertidas. Também faz com que os fragmentos adicionados sejam destruídos e removidos. Mas esses comandos são diferentes em alguns pontos significativos:
- O saveBackStack()é sempre inclusivo.
- Ao contrário de popBackStack(), que vai remover todas as transações na backstack se o nome especificado não for encontrado na backstack ou se um nome nulo for fornecido, osaveBackStack()não vai fazer nada se você não confirmar antes uma transação de fragmento usandoaddToBackStack()com exatamente esse nome não nulo.
- O estado de todos os fragmentos adicionados dessas transações é salvo. Isso significa que o estado de visualização de cada fragmento é armazenado. O onSaveInstanceState()de cada fragmento é chamado e restaurado. Todas as instâncias deViewModelassociadas a esses fragmentos são mantidas (eonCleared()não é chamado nelas).
As transações de fragmento que podem ser usadas com saveBackStack() precisam atender a alguns critérios:
- Todas as transações de fragmentos precisam usar setReorderingAllowed(true)para garantir que sejam restauradas como uma única operação atômica.
- O conjunto de transações salvas precisa ser autossuficiente (ou seja, ele não precisa referenciar explicitamente nenhum fragmento fora desse conjunto) para ser restaurado depois, independentemente das mudanças feitas na backstack no tempo intermediário.
- Nenhum fragmento salvo pode ser retido nem ter um fragmento retido no conjunto de transição de fragmentos filhos. Isso garante que o FragmentManagernão retorne nenhuma referência a fragmentos salvos depois que a backstack for salva.
Da mesma forma que saveBackStack(), restoreBackStack() e clearBackStack(), que restauram ou limpam, respectivamente, uma pilha de retorno salva anteriormente, as duas não vão fazer nada se você não tiver chamado saveBackStack() com o mesmo nome.
Para ver mais informações, consulte Várias backstacks: análise detalhada (link em inglês).
Versão 1.4.0-rc01
3 novembro de 2021
A versão androidx.fragment:fragment:1.4.0-rc01 foi lançada sem mudanças com relação à Fragment 1.4.0-beta01.  A versão 1.4.0-rc01 contém estas confirmações.
Versão 1.4.0-beta01
27 de outubro de 2021
Lançamento de androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 e androidx.fragment:fragment-testing:1.4.0-beta01. A versão 1.4.0-beta01 contém estas confirmações.
Correções de bugs
- Os fragmentos pai agora enviam onHiddenChanged()a toda a hierarquia antes de iniciar o próprio callback (Iedc20, b/77504618).
- Agora, o teclado é fechado automaticamente ao navegar de um fragmento com um teclado aberto a um com uma visualização de reciclagem (I8b842, b/196852211).
- O DialogFragmentagora usa o métodosetReorderingAllowed(true)para todas as transações criadas ao chamar os métodosshow(),showNow()oudismiss()(Ie2c14).
- O aviso de lint longo foi reduzido de DetachAndAttachFragmentInSameFragmentTransactionparaDetachAndAttachSameFragment(e9eca3).
Versão 1.4.0-alpha10
29 de setembro de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 e androidx.fragment:fragment-testing:1.4.0-alpha10. A versão 1.4.0-alpha10 contém estas confirmações.
Lint
- O alerta de lint DetachAndAttachFragmentInSameFragmentTransactionfoi adicionado para detectar chamadas dedetach()eattach()no mesmoFragmentna mesmaFragmentTransaction, já que essas operações complementares são canceladas quando feitas na mesma transação. É necessária a separação em transações distintas para funcionarem (aosp/1832956, b/200867930).
- O erro de lint FragmentAddMenuProviderfoi adicionado para corrigir os usos do ciclo de vida do fragmento para o ciclo de vida da visualização do fragmento ao usar a APIaddMenuProviderdoMenuHost(aosp/1830457, b/200326272).
Atualizações da documentação
- As mensagens de descontinuação das APIs gerenciadas pelas APIs Activity Result, como startActivityForResult,startIntentSenderForResult,onActivityResult,requestPermissionseonRequestPermissionsResult, agora oferecem mais detalhes (cce80f).
- As mensagens de descontinuação do método onActivityCreated()noFragmente noDialogFragmentagora oferecem mais detalhes (224db4).
Versão 1.4.0-alpha09
15 de setembro de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 e androidx.fragment:fragment-testing:1.4.0-alpha09. A versão 1.4.0-alpha09 contém estas confirmações.
Novos recursos
- Agora você pode chamar clearBackStack(name)para limpar qualquer estado salvo anteriormente comsaveBackStack(name)(I70cd7).
Mudanças na API
- A classe FragmentContainerViewfoi reescrita em Kotlin garantindo que a funçãogetFragmentrespeite corretamente a nulidade (If694a, b/189629145).
- FragmentStrictMode agora é escrito em Kotlin (I11767, b/199183506).
Correções de bugs
- Um problema em que o estado de um fragmento
que era adicionado usando setReorderingAllowed(true)e removido imediatamente antes da execução de transações pendentes não era limpo corretamente foi corrigido (I8ccb8).
Versão 1.4.0-alpha08
1º de setembro de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 e androidx.fragment:fragment-testing:1.4.0-alpha08. A versão 1.4.0-alpha08 contém estas confirmações.
Correções de bugs
- Melhoria na verificação de lint UseRequireInsteadOfGetpara lidar melhor com parênteses redundantes (I2d865).
- Melhoria na verificação de lint UseGetLayoutInflaterpara gerenciar outros casos extremos (Ie5423).
Versão 1.4.0-alpha07
18 de agosto de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 e androidx.fragment:fragment-testing:1.4.0-alpha07 sem mudanças importantes. A versão 1.4.0-alpha07 contém estas confirmações.
Versão 1.4.0-alpha06
4 de agosto de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 e androidx.fragment:fragment-testing:1.4.0-alpha06. A versão 1.4.0-alpha06 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema com várias backstacks em que,
ao alternar rapidamente entre elas, era
exibido como uma IllegalStateExceptionao restaurar umaFragmentTransactionou como uma segunda cópia de um fragmento em exibição (I9039f).
- Foi corrigido um problema em que o FragmentManagermantinha uma cópia do estado salvo anteriormente pelo métodosaveBackStack(), mesmo depois dele ter sido restaurado (Ied212).
- O método dismissAllowingStateLoss()doDialogFragmentnão falha mais quando você o chama depois que o estado é salvo ao adicionar especificamente o DialogFragment com o métodoshow(FragmentTransaction, String)(I84422).
Versão 1.4.0-alpha05
21 de julho de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 e androidx.fragment:fragment-testing:1.4.0-alpha05. A versão 1.4.0-alpha05 contém estas confirmações.
Correções de bugs
- Da API Fragment 1.3.6: a visualização do fragmento agora é definida corretamente comoGONEao usar o métodohide()quando a visualização raiz definetransitionGroup=”true”(aosp/1766655, b/193603427).
- Da API Fragment 1.3.6: aFragmentActivityagora sempre desbloqueia o estado salvo como a primeira operação em callbacks do ciclo de vida que ela substitui (I6db7a).
Atualização de dependências
- Da API Fragment 1.3.6: fragmentos agora dependem da Activity1.2.4(I3a66c).
Versão 1.4.0-alpha04
30 de junho de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 e androidx.fragment:fragment-testing:1.4.0-alpha04. A versão 1.4.0-alpha04 contém estas confirmações.
Mudanças na API
- FragmentManageragora usa- SavedStateRegistryinternamente para salvar o próprio estado. Os métodos- saveAllState()e- restoreSavedState()também foram descontinuados em- FragmentController. Se você estiver usando o- FragmentControllerpara hospedar fragmentos fora da- FragmentActivity, implemente- FragmentHostCallbacksem- SavedStateRegistryOwner(Iba68e, b/188734238).
Correções de bugs
- Foi corrigido um problema em que a chamada para
saveBackStack()como parte do suporte a várias backstacks falhava ao ser executada ao mesmo tempo que umaFragmentTransactionque usavareplace()era executada (I73137).
- Foi corrigida uma NullPointerExceptionque ocorria após a restauração manual de uma backstack salva que continha várias transações ao usar a APIrestoreBackStack()para suporte a várias backstacks. Isso também corrigiu um problema em quesetReorderingAllowed(true)não era verificado para todas as transações (I8c593).
- Foi corrigido um problema em que FragmentManagerrestaurava estados de fragmentos salvos mesmo depois de removidos doFragmentManager, fazendo com que o estado salvo aumentasse continuamente (I1fb8e).
Versão 1.4.0-alpha03
16 de junho de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 e androidx.fragment:fragment-testing:1.4.0-alpha03. A versão 1.4.0-alpha03 contém estas confirmações.
Novos recursos
- Todas as classes Fragment StrictMode Violationforam atualizadas com mensagens de erro mais detalhadas que explicam os detalhes da violação (b/187871638).- FragmentTagUsageViolationagora contém uma mensagem de erro mais detalhada com o contêiner pai ao qual o fragmento teria sido adicionado (Ic33a7).
- WrongFragmentContainerViolationagora tem uma mensagem de erro mais detalhada que inclui o contêiner ao qual o fragmento estava sendo adicionado (Ib55f8).
- As classes de caso de uso de TargetFragmentUsageViolationagora têm mensagens de erro mais detalhadas para incluir o fragmento que causa a violação e qualquer outra informação contida (Icc6ac).
- As classes que estendem RetainInstanceUsageViolationagora têm mensagens de erro mais detalhadas que incluem o fragmento que causa a violação (I6bd55).
- FragmentReuseViolationagora tem uma mensagem de erro mais detalhada que inclui o código anterior do fragmento (I28ce2).
- SetUserVisibleHintViolationagora tem uma mensagem de erro mais detalhada que inclui como a dica visível do usuário estava sendo definida (Ib2d5f).
 
Mudanças de comportamento
- A restrição sobre chamar fitsSystemWindowsem umaFragmentContainerViewfoi revertida. Isso não causa mais falhas no seu app (6b8ddd, b/190622202).
Correções de bugs
- Do Fragment 1.3.5: foi corrigida uma regressão em transições de elementos compartilhados introduzida no Fragment1.3.4por aosp/1679887. Os fragmentos agora processam corretamente os grupos de transição (definidos diretamente portransitionGroup="true"ou indiretamente portransitionNameoubackground), e os elementos compartilhados não geram maisIndexOutOfBoundsExceptions (I16484, b/188679569, b/188969304).
- O FragmentManagernão falha mais quando você tenta ocultar um fragmento removido (I573dd, b/183634730).
- A verificação de lint OnCreateDialogIncorrectCallbacknão falhará mais ao avaliar uma variável de nível superior (0a9efa, b/189967522).
Versão 1.4.0-alpha02
2 de junho de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 e androidx.fragment:fragment-testing:1.4.0-alpha02. A versão 1.4.0-alpha02 contém estas confirmações.
Novos recursos
- Agora, o FragmentStrictModesempre registrará violações quando a geração de registros for ativada peloFragmentManager, independentemente da política atual de modo restrito usada (I02df6, b/187872638).
- FragmentStrictModeagora oferece suporte à isenção de classes- Fragmentespecíficas de- Violations no modo restrito, possibilitando que essa classe ignore penalidades (Ib4e5d, b/184786736).
- A classe - Violationde- FragmentStrictModefoi ampliada para adicionar informações de estrutura com base em cada violação. Assim, é possível verificar exatamente o motivo que causou a violação e o fragmento responsável (If5118, b/187871150). Cada- Violationcontém o seguinte:- WrongFragmentContainerViolationagora contém o- ViewGroupa que o- Fragmentestava tentando ser adicionado (I83c75, b/187871150).
- TargetFragmentUsageViolationfoi ampliada em- SetTargetFragmentUsageViolation,- GetTargetFragmentUsageViolatione- GetTargetFragmentRequestCodeUsageViolation, com- SetTargetFragmentUsageViolationcontendo o fragmento de destino e o código de solicitação (I741b4, b/187871150).
- SetUserVisibleHintViolationagora contém o valor booleano transmitido para- setUserVisibleHint()(I00585, b/187871150).
- FragmentTagUsageViolationagora contém o ViewGroup em que a tag- <fragment>estava tentando inflar um fragmento (I5dbbc, b/187871150).
- FragmentReuseViolationagora contém o ID exclusivo da instância anterior do- Fragmentque causou a violação (I0544d, b/187871150).
- RetainInstanceUsageViolationagora é abstrata e tem duas subclasses,- SetRetainInstanceUsageViolatione- GetRetainInstanceUsageViolation, representando os dois tipos de casos de violação (Ic81e5, b/187871150).
 
Mudanças de comportamento
- FragmentContainerViewagora gera uma exceção ao tentar mudar o atributo- fitsSystemWindowde maneira programática ou por XML. Os encartes precisam ser tratados pela visualização de cada fragmento individual (Ie6651, b/187304502).
Versão 1.4.0-alpha01
18 de maio de 2021
Lançamento de androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 e androidx.fragment:fragment-testing:1.4.0-alpha01. A versão 1.4.0-alpha01 contém estas confirmações.
Novos recursos
- A - FragmentContainerViewagora oferece um método- getFragment()que retorna o fragmento que foi adicionado mais recentemente ao contêiner. Esse método usa a mesma lógica de- findFragmentById()com o ID da- FragmentContainerView, mas permite encadear a chamada (Ife17a, b/162527857).- val navController = binding.container.getFragment<NavHostFragment>().navController
- Foi adicionado o - FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}para especificar se a animação padrão de transição de atividades do tema usado será ativada na transição de fragmentos (I46652).
Várias backstacks
O FragmentManager mantém uma backstack composta de transações de fragmentos que usaram addToBackStack(). Isso permite remover essas transações e retornar ao estado anterior usando os mecanismos para salvar o estado com fragmentos e fazer com que os fragmentos restaurem o estado corretamente.
Esta versão expande esses mecanismos fornecendo duas novas APIs do FragmentManager: saveBackStack(String name) e restoreBackStack(String name). Essas APIs usam o mesmo name de addToBackStack() para salvar o estado da FragmentTransaction e o estado de cada fragmento adicionado a essas transações. Também permitem restaurar as transações e os fragmentos com o estado delas. Assim, é possível "alternar" de fato entre várias backstacks, salvando a atual e restaurando uma salva anteriormente.
O saveBackStack() opera da mesma forma que popBackStack(): ele é assíncrono e faz com que todas as transações de fragmento voltem a esse nome específico para serem revertidas. Também faz com que os fragmentos adicionados sejam destruídos e removidos. Mas esses comandos são diferentes em alguns pontos significativos:
- O saveBackStack()é sempre inclusivo.
- Ao contrário de popBackStack(), que vai remover todas as transações na backstack se o nome especificado não for encontrado na backstack ou se um nome nulo for fornecido, osaveBackStack()não vai fazer nada se você não confirmar antes uma transação de fragmento usandoaddToBackStack()com exatamente esse nome não nulo.
- O estado de todos os fragmentos adicionados dessas transações é salvo. Isso significa que o estado de visualização de cada fragmento é armazenado. O onSaveInstanceState()de cada fragmento é chamado e restaurado. Todas as instâncias deViewModelassociadas a esses fragmentos são mantidas (eonCleared()não é chamado nelas).
As transações de fragmento que podem ser usadas com saveBackStack() precisam atender a alguns critérios:
- Todas as transações de fragmentos precisam usar setReorderingAllowed(true)para garantir que sejam restauradas como uma única operação atômica.
- O conjunto de transações salvas precisa ser autossuficiente (ou seja, ele não precisa referenciar explicitamente nenhum fragmento fora desse conjunto) para ser restaurado depois, independentemente das mudanças feitas na backstack no tempo intermediário.
- Nenhum fragmento salvo pode ser retido nem ter um fragmento retido no conjunto de transição de fragmentos filhos. Isso garante que o FragmentManagernão retorne nenhuma referência a fragmentos salvos depois que a backstack for salva.
Da mesma forma que o saveBackStack(), o restoreBackStack() não fará nada se você não tiver chamado saveBackStack() com o mesmo nome anteriormente (b/80029773).
Fragmento StrictMode
As APIs FragmentStrictMode fornecem verificações no momento da execução para checar se o app ou as bibliotecas de que você depende não estão chamando APIs de fragmentos descontinuadas. Quando uma violação é detectada, você pode imprimir uma mensagem de registro, acionar seu listener personalizado ou causar uma falha no app. A FragmentStrictMode.Policy que controla quais verificações são ativadas e quais "penalidades" são acionadas pode ser definida em um FragmentManager usando o novo método setStrictModePolicy(). A política se aplica a esse FragmentManager e, de forma transitória, aos gerenciadores de fragmentos filhos que não definem a própria política exclusiva (#123, #131, #150, b/143774122).
- O detectFragmentReuse()detecta se uma instância deFragmentremovida antes está sendo adicionada novamente a umFragmentManager. Nunca interaja com uma instância deFragmentnem mantenha uma referência a ela depois que ela é destruída e removida de umFragmentManager(#142, b/153738653).
- O detectFragmentTagUsage()detecta quando você está usando a tag<fragment>no XML de layout. Sempre use aFragmentContainerViewao inflar fragmentos como parte do layout (#141, b/153738235).
- O detectWrongFragmentContainer()detecta quando você adiciona um fragmento a um contêiner que não é umaFragmentContainerView. Sempre use aFragmentContainerViewcomo contêiner de fragmentos no seu layout (#146, b/181137036).
- O detectRetainInstanceUsage()detecta quando você usa as APIssetRetainInstance()ougetRetainInstance()descontinuadas (#140, b/153737954).
- O detectSetUserVisibleHint()detecta quando você usa a APIsetUserVisibleHint()descontinuada (#136, b/153738974).
- O detectTargetFragmentUsage()detecta quando você usa as APIssetTargetFragment(),getTargetFragment()ougetTargetRequestCode()descontinuadas (#139, b/153737745).
Mudanças na API
- A API experimental de FragmentManager.enableNewStateManager(boolean)foi removida, e o novo gerenciador de estado agora é a única opção disponível (I90036, b/162776418).
- O FragmentScenarioagora implementa oCloseable, permitindo o uso com o métodousedo Kotlin ou com try-with-resources (#121, b/143774122).
Novas verificações de lint
- A verificação de lint UseGetLayoutInflateragora avisa quando usaLayoutInflater.from(Context)em umDialogFragment. Use sempre o métodogetLayoutInflater()do fragmento da caixa de diálogo para receber o apropriado paraLayoutInflater(#156, b/170781346).
- A verificação de lint DialogFragmentCallbacksDetectoragora avisa quando chama osetOnCancelListenerou osetOnDismissListenerno métodoonCreateDialog()de umDialogFragment. Esses listeners pertencem aoDialogFragment, e é preciso modificaronCancel()eonDismiss()para receber esses callbacks (#171, b/181780047, b/187524311).
Correções de bugs
- A partir do Fragment 1.3.4: foi feita a correção de uma regressão introduzida no Fragment 1.3.3ao usar a APIViewTreeViewModelStoreOwner.get()com oViewModelProviderou o métodoviewModel()do Jetpack Compose dentro de um fragmento. Esses casos de uso agora vão usar corretamente aViewModelProvider.Factoryfornecida pelo fragmento se ela modificargetDefaultViewModelProviderFactory()(como os fragmentos com anotações do@AndroidEntryPointfazem ao usar o Hilt). Se você não modificar esse método, umaSavedStateViewModelFactoryque salva e restaura o estado junto com a visualização do fragmento vai ser criada como a fábrica padrão (I5cbfa, b/186097368).
- A partir do Fragment 1.3.4: ao usar a FragmentContainerViewna API 29, os encartes não vão mais ser enviados indefinidamente, corrigindo problemas com instâncias daBottomNavigationBare doFloatingActionButton(I1bb78, b/186012452).
- No Fragment 1.3.4 e versões mais recentes: agora você pode extrair seu Parcelable do pacote de resultados do fragmento após a interrupção do processo (I65932, b/187443158).
- A partir do Fragment 1.3.4: ao fazer uma transição de elemento compartilhado em um ViewGroup, se
ele tiver o transitionGroupdefinido como falso, a transição vai ser feita corretamente (I99675).
Contribuição externa
- Agradecemos a simonschiller por fazer com que o FragmentScenarioimplemente oCloseable(#121, b/143774122).
- Agradecemos a simonschiller por adicionar a API FragmentStrictModena íntegra nesta versão (#123, #131, #150, b/143774122, #142, b/153738653, #141, b/153738235, #146, b/181137036, #140, b/153737954, #136, b/153738974, #139, b/153737745).
- Agradecemos a tatocaster por adicionar a verificação de lint UseGetLayoutInflater(#156, b/170781346).
- Agradecemos a tatocaster por adicionar a verificação de lint DialogFragmentCallbacksDetector(171, b/181780047).
Versão 1.3
Versão 1.3.6
21 de julho de 2021
Lançamento de androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 e androidx.fragment:fragment-testing:1.3.6. A versão 1.3.6 contém estas confirmações.
Correções de bugs
- Da API Fragment 1.4.0-alpha03: oFragmentManagernão vai mais falhar quando você tentar ocultar um fragmento de remoção (I573dd, b/183634730).
- A visualização de fragmento agora é definida corretamente como GONEao usar o métodohide()quando a visualização raiz definetransitionGroup=”true”(aosp/1766655, b/193603427).
- Agora, FragmentActivitysempre desbloqueia o estado salvo como a primeira operação nos callbacks de ciclo de vida que ela substitui (I6db7a).
Atualização de dependências
- Da API Fragment 1.3.6: fragmentos agora dependem da Activity1.2.4(I3a66c).
Versão 1.3.5
16 de junho de 2021
Lançamento de androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 e androidx.fragment:fragment-testing:1.3.5. A versão 1.3.5 contém estas confirmações.
Correções de bugs
- Foi corrigida uma regressão em transições de elementos compartilhados introduzidas no Fragment 1.3.4por aosp/1679887. Os fragmentos agora processam corretamente os grupos de transição (definidos diretamente portransitionGroup="true"ou indiretamente portransitionNameoubackground), e os elementos compartilhados não geram maisIndexOutOfBoundsExceptions (I16484, b/188679569, b/188969304).
Versão 1.3.4
18 de maio de 2021
Lançamento de androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 e androidx.fragment:fragment-testing:1.3.4. A versão 1.3.4 contém estas confirmações.
Correções de bugs
- Foi corrigida uma regressão introduzida no Fragment 1.3.3ao usar a APIViewTreeViewModelStoreOwner.get()com oViewModelProviderou o métodoviewModel()do Jetpack Compose dentro de um fragmento ao usar o Hilt. Esses casos de uso agora vão usar corretamente aViewModelProvider.Factoryfornecida pelo fragmento se ela modificargetDefaultViewModelProviderFactory()(como os fragmentos com anotações do@AndroidEntryPointfazem). Se você não modificar esse método, umaSavedStateViewModelFactoryque salva e restaura o estado junto com a visualização do fragmento vai ser criada como a fábrica padrão (I5cbfa, b/186097368).
- Ao usar a FragmentContainerViewna API 29, os encartes não serão mais enviados indefinidamente, corrigindo problemas com instâncias daBottomNavigationBare doFloatingActionButton(I1bb78, b/186012452).
- Agora você pode recuperar seu Parcelable do pacote de resultados do fragmento após a interrupção do processo (I65932, b/187443158).
- Ao fazer uma transição de elemento compartilhado em um ViewGroup, se
ele tiver o transitionGroupdefinido como falso, a transição vai ser feita corretamente (I99675).
Versão 1.3.3
21 de abril de 2021
Lançamento de androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 e androidx.fragment:fragment-testing:1.3.3. A versão 1.3.3 contém estas confirmações.
Novos recursos
- O SavedStateViewModelFactoryagora funciona quando usado com oSavedStateRegistryOwnerretornado pelo uso deViewTreeSavedStateRegistryOwner.get()com a visualização do fragmento (I21acf, b/181577191).
Correções de bugs
- Foi corrigida uma regressão introduzida no Fragment 1.3.2, que fazia com que as animaçõespopEnternão fossem executadas ao remover umFragmentTransactionque incluísse uma operaçãosetPrimaryNavFragment, como aquelas usadas porNavHostFragment(I38c87, b/183877426).
- FragmentContainerViewagora garante que cada- Fragmentreceba um novo conjunto de- WindowInsets, garantindo que cada fragmento agora possa consumir os encartes de forma independente (I63f68, b/172153900).
- DialogFragmentagora lida corretamente com casos em que um fragmento filho é adicionado a um contêiner que tem o mesmo código que um contêiner na sua classe- Dialogpersonalizada, corrigindo problemas de hierarquia de visualização ao reutilizar códigos usados internamente por caixas de diálogo como- BottomSheetDialog(Ie6279, b/180021387).
- FragmentManager.dump()agora recua corretamente o primeiro fragmento na lista de fragmentos ativos (If5c33, b/183705451).
Novas correções de bugs do gerenciador de estado
- O novo gerente de estado de fragmento agora lida corretamente com as transições de saída com operações de ocultação (I9e4de, b/184830265).
Versão 1.3.2
24 de março de 2021
Lançamento de androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 e androidx.fragment:fragment-testing:1.3.2. A versão 1.3.2 contém estas confirmações.
Novas correções de bugs do gerenciador de estado
- Ao executar as operações popBackStack()ecommit()juntas, a última operação agora definirá a direção de todas as animações em vez de executar algumas animações de destaque e algumas animações de entrada (I7072e, b/181142246).
- As visualizações de uma hierarquia de elementos compartilhados não terão mais o nome excluído durante uma transição de elemento compartilhado (I4d4a6, b/179934757).
Atualizações de dependência
- O Fragment agora depende da Activity 1.2.2, corrigindo um problema com a verificação de lint InvalidFragmentVersionForActivityResultda Activity ao usar o Fragment 1.3.1 ou mais recente.
- O Fragment agora depende do Lifecycle 2.3.1.
Versão 1.3.1
10 de Março de 2021
Lançamento de androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 e androidx.fragment:fragment-testing:1.3.1. A versão 1.3.1 contém estas confirmações.
Novos recursos
- As caixas de diálogo em um DialogFragmentagora podem ter acesso aos proprietários da ViewTree da DecorationView, garantindo queDialogFragmentpossa ser usado comComposeView(Ib9290, b/180691023).
Correções de bugs
- Fragmentos inflados em uma atividade já RESUMEDque usa FragmentContainerView agora são mostrados corretamente depois de uma mudança de configuração (Ie14c8, b/180538371).
- Não há mais um }extra no final do fragmentotoString()(I54705, b/177761088).
- Os métodos substituídos em FragmentActivity agora herdam corretamente o método base javaDoc (I736ce, b/139548782).
- Os documentos para setFragmentResultesetFragmentResultListeneratualizaram os parâmetros para refletir que não aceitam mais anuláveis (I990ba, b/178348386).
Novas correções de bugs do gerenciador de estado
- Correção de um vazamento de memória em fragmentos causado por mFocusedView(Ib4e9e, b/179925887).
- Agora, os fragmentos chamam corretamente onCreateOptionsMenuao usar mostrar/ocultar transações (I8bce8, b/180255554).
- Fragmentos filhos com transições que iniciam antes do fragmento ser posicionado agora são
RESUMEDcorretamente (Ic11e6, b/180825150).
- Agora, os fragmentos inflados usando a tag <fragment>sempre resultarão emRESUMED(I452ac, I9fa49).
Atualizações de dependência
- O Fragment 1.3.1 depende da Activity 1.2.1(I557b9).
Versão 1.3.0
10 de fevereiro de 2021
Lançamento de androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 e androidx.fragment:fragment-testing:1.3.0. A versão 1.3.0 contém estas confirmações.
Principais mudanças desde a versão 1.2.0
- Novo gerenciador de estado: uma reprogramação interna considerável do FragmentManagercorrigiu vários problemas relacionados ao envio de eventos, animações e transições do ciclo de vida e ao modo como os fragmentos adiados são processados.
- Integração da API Activity Result: foi adicionado suporte à API - ActivityResultRegistryintroduzida na Activity- 1.2.0para gerenciar- startActivityForResult()+- onActivityResult(), bem como fluxos- requestPermissions()+- onRequestPermissionsResult()sem substituir métodos no Fragment, além de fornecer hooks para testar esses fluxos. Confira a atualização de Como gerar resultados com uma atividade.- Esta versão corrige vários problemas relacionados a códigos de solicitação inválidos e o envio de solicitações de permissão que impedem a API Activity Result de funcionar em versões anteriores de FragmentActivity. É necessário fazer upgrade para o Fragment 1.3.0 para usar as APIs Activity Result em umaFragmentActivityouAppCompatActivity.
 
- Esta versão corrige vários problemas relacionados a códigos de solicitação inválidos e o envio de solicitações de permissão que impedem a API Activity Result de funcionar em versões anteriores de 
- API Fragment Result: adição do suporte para a transmissão de resultados entre dois Fragments com novas APIs em - FragmentManager. Isso funciona para fragmentos de hierarquia (pai/filho), DialogFragments e fragmentos na navegação e garante que os resultados sejam enviados para seu fragmento apenas enquanto o estado dele for pelo menos- STARTED(iniciado). O uso das APIs de fragmento de destino foi descontinuado em favor dessas novas APIs. Consulte Receber resultados usando a API Fragment Result.
- FragmentOnAttachListener: o uso do callback- onAttachFragment()em- FragmentActivitye- Fragmentfoi descontinuado. Um novo- FragmentOnAttachListenerfoi adicionado para oferecer uma alternativa mais flexível, permitindo a delegação de- onAttachFragment()para listeners testáveis separados e suporte ao acréscimo de um listener a FragmentManagers que não sejam o FragmentManager do filho direto.
- Melhorias de - FragmentScenario: a classe- FragmentScenariodo artefato- fragment-testingfoi reescrita em Kotlin e recebeu várias melhorias:- FragmentScenarioagora usa- setMaxLifecycle()para implementar- moveToState(), garantindo um comportamento consistente em todos os níveis da API e desacoplando o estado do fragmento da atividade implícita.
- FragmentScenarioagora oferece suporte para a configuração de um- Lifecycle.Stateinicial para possibilitar a declaração do estado do fragmento antes da mudança para cada- Lifecycle.Statepela primeira vez.
- Agora há uma alternativa para a API FragmentScenariodeonFragmentna forma do método Kotlin de extensão reificadowithFragmentque permite retornar um valor. Em especial, ele repete as exceções geradas no bloco especificado.
 
- Suporte a - ViewTree:- Fragmentagora oferece suporte às APIs- ViewTreeLifecycleOwner.get(View),- ViewTreeViewModelStoreOwner.get(View)e- ViewTreeSavedStateRegistryOwneradicionadas no Lifecycle- 2.3.0e SavedState- 1.1.0para retornar o Fragment como o- ViewModelStoreOwnere um- SavedStateRegistryOwnere- LifecycleOwnerligados ao ciclo de vida de visualização do fragmento ao usar uma- Viewem um- Fragment.
- Mudanças de animação de - TRANSIT_: os efeitos padrão de fragmento,- TRANSIT_FRAGMENT_OPEN,- TRANSIT_FRAGMENT_CLOSEe- TRANSIT_FRAGMENT_FADE, agora usam- Animatorem vez de- Animation. Os recursos usados para criar esses animadores agora são particulares.
- Descontinuação de - setRetainInstance(): o uso do método- setRetainInstance()em Fragments foi descontinuado. Com a introdução de ViewModels, os desenvolvedores têm uma API específica para manter o estado que pode ser associado a gráficos de Activities, Fragments e Navigation. Isso permite que os desenvolvedores usem um Fragment normal não retido e mantenham o estado específico que querem reter separado, evitando uma fonte comum de vazamentos e mantendo as propriedades úteis de uma única criação e destruição do estado retido, ou seja, o construtor do- ViewModele o callback- onCleared()recebido.
- Descontinuação do adaptador ViewPager 1: com o lançamento do ViewPager2 - 1.0.0, o uso das classes- FragmentPagerAdaptere- FragmentStatePagerAdapterpara interagir com- ViewPagerfoi descontinuado. Consulte Migrar do ViewPager para o ViewPager2.
Versão 1.3.0-rc02
27 de janeiro de 2021
Lançamento de androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 e androidx.fragment:fragment-testing:1.3.0-rc02. A versão 1.3.0-rc02 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que um DialogFragmentpai aparecia acima de umDialogFragmentfilho após uma mudança de configuração. Agora, os fragmentos da caixa de diálogo filha sempre são mostrados acima de um fragmento da caixa de diálogo mãe (I30806, b/177439520).
- Foi corrigido o problema em que uma operação hidecom umAnimationfazia com que o fragmento de ocultação fosse atualizado no fim da animação (I57e22, b/175417675).
- Os fragmentos com transições adicionados antes de a hierarquia
de visualização ser anexada agora alcançam RESUMEDcorretamente (I1fc1d, b/177154873).
Novas correções de bugs do gerenciador de estado
- A visualização Lifecycledo Fragment agora gerencia corretamente os casos em que a visualização do Fragment é destruída antes que oLifecyclealcanceCREATED(criado), evitando exceções que indiquem "nenhum evento abaixo de INITIALIZED" (eda2bd, b/176138645).
- Os fragmentos que usam um Animatoragora aparecem na ordem correta ao usarFragmentContainerView(Id9aa3, b/176089197).
Versão 1.3.0-rc01
16 de dezembro de 2020
Lançamento de androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 e androidx.fragment:fragment-testing:1.3.0-rc01. A versão 1.3.0-rc01 contém estas confirmações.
Correções de bugs
- onPrepareOptionsMenu()agora segue a mesma lógica de- onCreateOptionsMenu()e não é mais chamado quando um fragmento pai chama- setMenuVisibility(false)(Id7de8, b/173203654).
Novas correções de bugs do gerenciador de estado
- Foi corrigido um artefato de vazamento e visual ao adicionar
um fragmento com uma Animationa umaFragmentContainerViewe, em seguida, interromper essa adição com uma operação de remoção por destaque (I952d8).
- Foi corrigido um problema em que a visualização do fragmento ficava
na hierarquia de visualizações se fosse substituída durante
os métodos onCreate()ouonViewCreated()(I8a7d5).
- Agora, o foco é restaurado corretamente para as visualizações raiz do fragmento quando elas são retomadas (Ifc84b).
- A combinação de operações de remoção e de substituição na mesma transação de fragmento agora vai mostrar as animações adequadas (Ifd4e4, b/170328691).
Versão 1.3.0-beta02
2 de dezembro de 2020
Lançamento de androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 e androidx.fragment:fragment-testing:1.3.0-beta02. A versão 1.3.0-beta02 contém estas confirmações.
Novos recursos
- O FragmentScenariofoi totalmente convertido para Kotlin, mantendo o suporte binário de origem com o uso das interfaces funcionais do Kotlin 1.4 paraFragmentAction(I19d31).
Mudanças de comportamento
- FragmentContainerViews que não inflarem um fragmento usando o atributo classouandroid:nameagora podem ser usadas fora de umaFragmentActivity(Id4397, b/172266337).
- A tentativa de definir o ciclo de vida máximo de um fragmento como DESTROYEDagora gerará umaIllegalArgumentException(Ie7651, b/170765622).
- A inicialização de um FragmentScenario com um estado DESTROYEDagora gerará umaIllegalArgumentException(I73590, b/170765622).
Novas correções de bugs do gerenciador de estado
- Foi corrigido um problema em que a visualização não chegava ao estado final caso você interrompesse uma transição de fragmento que usava um Animatorou uma das opçõesTRANSIT_FRAGMENT_(I92426, b/169874632).
- Foi corrigido um problema que impedia que fragmentos com uma saída Animationfossem devidamente destruídos (I83d65).
- Os fragmentos de saída que tinham seus efeitos revertidos agora são cancelados corretamente e reiniciados com o efeito de inserção adequado (I62226, b/167092035).
- Correção de um problema em que a saída Animatorde umhide()não era executada (Id7ffe).
- Agora, os fragmentos aparecem corretamente quando são adiados e iniciados imediatamente (Ie713b, b/170022857).
- Fragmentos que removem a visualização focada durante uma animação não tentarão mais restaurar o foco na visualização separada ao chegar a RESUMED(I38c65, b/172925703).
Contribuição externa
- FragmentFactoryagora armazena em cache classes de fragmento separadamente para diferentes instâncias de- ClassLoader. Agradecemos a Simon Schiller (87, b/113886460).
Versão 1.3.0-beta01
1º de outubro de 2020
Lançamento de androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 e androidx.fragment:fragment-testing:1.3.0-beta01. A versão 1.3.0-beta01 contém estas confirmações.
Novos recursos
- setMaxLifecycle()agora oferece suporte à configuração do estado- Lifecyclepara- INITIALIZING, desde que o fragmento não tenha sido movido para- CREATED(b/159662173).
Mudanças na API
- Atualização do AndroidX para usar o Kotlin 1.4 (Id6471, b/165307851, b/165300826).
Mudanças de comportamento
- Os arquivos de recursos de fragmentos foram definidos corretamente como particulares (aosp/1425237).
Correções de bugs
- Agora, os fragmentos inflados que usam a tag <fragment>vão esperar da forma correta até que as visualizações sejam adicionadas a um contêiner antes de serem movidos para o estado STARTED (iniciado) (I02f4c).
- Os fragmentos que estão visíveis e depois setMaxLifecycle()paraCREATEDagora executam adequadamente os efeitos de saída (b/165822335).
- A remoção de um fragmento desanexado que não é adicionado à pilha de retorno não causa mais vazamentos de memória. Cortesia de Nicklas Ansman Giertz (b/166489383).
- Os fragmentos ativos sempre vão ter um FragmentManagernão nulo, e fragmentos com umFragmentManagernão nulo sempre vão ser considerados ativos (aosp/1422346).
- Os efeitos padrão de fragmento, TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEeTRANSIT_FRAGMENT_FADE, agora usamAnimatorem vez deAnimation(b/166155034).
Novas correções de bugs do gerenciador de estado
- Agora, os fragmentos restauram corretamente o estado de foco de visualização da direita antes de iniciar a animação (Icc256).
- Fragmentos com apenas uma transição de elemento compartilhado agora completam corretamente os efeitos especiais, o que significa que eles se movem para o estado final (Iaebc7, b/166658128).
- As visualizações de fragmentos agora são sempre removidas do contêiner antes de serem destruídas (Id5876).
- O novo gerenciador de estado agora remove de maneira consistente a visualização de fragmento existente antes de adicionar a nova (I41a6e).
- As mudanças explícitas na visibilidade de uma visualização de fragmento agora são respeitadas pelo novo gerenciador de estado. Isso significa que se você definir a visualização de um fragmento de entrada como INVISIBLEantes da animação começar, ela vai permanecer invisível (b/164481490).
- Agora, os fragmentos priorizam Animatorsem vez deAnimations, o que significa que um fragmento com ambos vai executar apenas oAnimatore vai ignorar aAnimation(b/167579557).
- O novo gerenciador de estado não faz mais com que os fragmentos sejam atualizados ao usar animações de entrada (b/163084315).
Problema conhecido
Ao usar o novo gerenciador de estado, se você pressionar "Voltar" durante um efeito especial de entrada em vez de retornar ao fragmento anterior, o fragmento antigo nunca será adicionado novamente, resultando em uma tela em branco (b/167259187, b/167092035, b/168442830).
Versão 1.3.0-alpha08
19 de agosto de 2020
Lançamento de androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 e androidx.fragment:fragment-testing:1.3.0-alpha08. A versão 1.3.0-alpha08 contém estas confirmações.
Novo gerenciador de estado
Esta versão inclui uma grande refatoração do gerenciamento interno de estado do FragmentManager, que afeta o envio de animações, transições e métodos do ciclo de vida e como as transações adiadas são processadas. Essa opção fica ativada por padrão. Para saber mais detalhes, consulte a postagem do blog Fragments: Rebuilding the Internals (link em inglês). (b/139536619, b/147749580).
- Uma API experimental no FragmentManager.enableNewStateManager(boolean)pode ser usada para controlar se FragmentManager usa o novo gerenciador de estado (I7b6ee)
Os problemas a seguir são corrigidos somente quando se usa o novo gerenciador de estado:
- O fragmento anterior de uma operação replaceagora é interrompido corretamente antes de o novo fragmento ser iniciado (b/161654580).
- Agora, os fragmentos impedem várias animações concorrentes nos mesmos fragmentos, evitando casos em que uma Animationsubstituiria todos os efeitos deTransitionou em que umAnimatore umaTransitionem um fragmento individual seriam executados (b/149569323).
- A enterTransitione aexitTranstionde todos os fragmentos que entram e saem agora são executadas, em vez de apenas o último fragmento de entrada e o primeiro fragmento de saída (b/149344150).
- Os fragmentos adiados não ficam mais presos no estado CREATED. Agora, eles são movidos paraSTARTEDcom outros fragmentos (b/129035555).
- Foi corrigido um problema em que o FragmentManagerexecutaria operações fora de ordem, misturando uma transação reordenada adiada e uma transação não reordenada (b/147297731).
- Remover vários fragmentos simultaneamente por destaque não vai fazer mais com que os fragmentos intermediários fiquem temporariamente visíveis ao serem adiados (b/37140383).
- FragmentManageragora retorna os fragmentos corretos ao chamar- findFragmentById()ou- findFragmentByTag()do callback- onAttachFragment()(b/153082833).
- Os fragmentos não chamam mais onCreateView()em fragmentos que são destruídos quando o fragmento que os substitui é adiado (b/143915710).
- A mensagem de erro ao tentar combinar instâncias de Transitiondo framework eTransitiondo AndroidX agora menciona o fragmento com a transição inválida (b/155574969).
Mudanças de comportamento
- Agora você pode chamar launch()em umActivityResultLauncherno método de ciclo de vidaonCreate()de um fragmento (b/161464278).
- Chamar registerForActivityResult()depois deonCreate()agora gera uma exceção indicando que isso não é permitido, em vez de deixar silenciosamente de fornecer resultados após uma mudança na configuração (b/162255449).
- FragmentActivityagora usa a API- OnContextAvailableListenerintroduzida na atividade- 1.2.0-alpha08para restaurar o estado do- FragmentManager. Todos os listeners adicionados às subclasses da- FragmentActivityserão executados depois desse listener. (I513da)
Correções de bugs
- ActivityOptionsaprovadas ao usar- startIntentSenderForResult()agora são respeitadas (b/162247961).
Problema conhecido
- Ao usar o novo gerenciador de estado, definir diretamente a visibilidade da visualização raiz do fragmento depois de onViewCreated()e antes deonResume()faz com que a visibilidade definida seja modificada peloFragmentManager, que controla a visibilidade da visualização raiz. Como alternativa, use sempre as operaçõeshide()eshow()para mudar a visibilidade do fragmento (b/164481490).
Versão 1.3.0-alpha07
22 de julho de 2020
Lançamento de androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 e androidx.fragment:fragment-testing:1.3.0-alpha07. A versão 1.3.0-alpha07 contém estas confirmações.
Novos recursos
- FragmentScenarioagora oferece suporte à configuração de um estado inicial do Lifecycle de- CREATED(criado),- STARTED(iniciado) ou- RESUMED(retomado), em vez de sempre mover o fragmento para o estado- RESUMED(retomado) (b/159662750).
- Adição de uma alternativa à API FragmentScenariodeonFragmentna forma do método de extensãowithFragmentreificado de Kotlin, que permite retornar um valor. Em especial, ele repete as exceções geradas no bloco especificado. (b/158697631).
Mudanças de comportamento
- FragmentScenarioagora usa- setMaxLifecycle()para implementar- moveToState(), garantindo um comportamento consistente em todos os níveis da API e desacoplando o estado do fragmento da atividade implícita. (b/156527405).
- O SavedStateRegistryOwnerretornado porViewTreeSavedStateRegistryOwneragora está vinculado ao Lifecycle da visualização de fragmento. Isso garante que o estado seja salvo e restaurado de forma simultânea à visualização do fragmento (b/158503763).
Correções de bugs
- Os fragmentos agora aguardam a anexação da visualização do fragmento antes de chamar ViewCompat.requestApplyInsets(), evitando casos em que a solicitação inserida era descartada (b/158095749).
- Chamar clearFragmentResultListeneragora libera corretamente o observador de Lifecycle (b/159274993).
Versão 1.3.0-alpha06
10 de junho de 2020
Lançamento de androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 e androidx.fragment:fragment-testing:1.3.0-alpha06. A versão 1.3.0-alpha06 contém estas confirmações.
Novos recursos
- O callback onAttachFragment()emFragmentActivityeFragmentfoi descontinuado. Um novoFragmentOnAttachListenerfoi adicionado para oferecer uma alternativa mais flexível, permitindo a delegação deonAttachFragment()para listeners testáveis separados e suporte ao acréscimo de um listener a FragmentManagers que não sejam o FragmentManager do filho direto (I06d3d).
Correções de bugs
- Os fragmentos pai agora têm o estado de visualização restaurado antes dos fragmentos filhos, corrigindo um problema de ordem visual após uma mudança de configuração quando um DialogFragmentmostrava outroDialogFragmentcomo fragmento filho (b/157195715).
- Foi corrigido um problema em que a verificação de lint UseRequireInsteadOfGetnão processava corretamente os usos encadeados dos operadores?.e!!(b/157677616).
Versão 1.3.0-alpha05
20 de maio de 2020
Lançamento de androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 e androidx.fragment:fragment-testing:1.3.0-alpha05. A versão 1.3.0-alpha05 contém estas confirmações.
Novos recursos
- Foi adicionado suporte à classe ViewTreeViewModelStoreOwnerdo Lifecycle2.3.0-alpha03e àViewTreeSavedStateRegistryOwnerdo SavedState1.1.0-alpha01ao usar umaViewem umaFragment(aosp/1297993, aosp/1300264).
Mudanças na API
- As APIs setFragmentResult()esetFragmentResultListener()agora usamBundleeFragmentResultListenernão nulos, respectivamente. Para limpar explicitamente um resultado ou listener definido anteriormente, use os novos métodosclearFragmentResult()eclearFragmentResultListener()(b/155416778).
- As extensões setFragmentResultListener()do Kotlin que usam um lambda agora estão marcadas comoinline(b/155323404).
Mudanças de comportamento
- O startActivityForResult(),startIntentSenderForResult()erequestPermissionsemFragment, descontinuados anteriormente, agora usamActivityResultRegistryinternamente, removendo assim a restrição de uso apenas dos bits inferiores (abaixo de0xFFFF) para seus códigos de solicitação ao usar essas APIs (b/155518741).
Atualizações da documentação
- A documentação sobre os construtores Fragment(@LayoutRes int)eDialogFragment(@LayoutRes int)foi expandida para esclarecer que eles devem ser chamados no construtor sem argumentos das subclasses ao usar oFragmentFactorypadrão (b/153042497).
Versão 1.3.0-alpha04
29 de abril de 2020
Lançamento de androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 e androidx.fragment:fragment-testing:1.3.0-alpha04. A versão 1.3.0-alpha04 contém estas confirmações.
Novos recursos
- Inclusão de suporte para transmitir resultados entre dois fragmentos usando novas APIs em FragmentManager. Isso funciona para fragmentos de hierarquia (pai/filho), DialogFragments e fragmentos na navegação e garante que os resultados sejam enviados para seu fragmento apenas enquanto o estado dele for pelo menosSTARTED(iniciado) (b/149787344).
Mudanças na API
- O uso das APIs de fragmento de destino foi descontinuado. Para transmitir dados entre fragmentos, as novas APIs de resultado do Fragment precisam ser usadas (b/149787344).
- O uso das APIs startActivityForResult()/onActivityResult()erequestPermissions()/onRequestPermissionsResult()em Fragment foi descontinuado. Use as APIs Activity Result (aosp/1290887).
- Alteração interruptiva de Activity 1.2.0-alpha04: o métodoprepareCall()foi renomeado comoregisterForActivityResult()(aosp/1278717).
Correções de bugs
- O getViewLifecycleOwner()do fragmento agora é interrompido antes deonSaveInstanceState()ser chamado, espelhando o comportamento do ciclo de vida do fragmento (b/154645875).
- Chamar setMenuVisibility(false)em um fragmento agora modifica corretamente a visibilidade dos menus fornecidos pelos fragmentos filhos (b/153593580).
- Foi corrigido um illegalStateExceptionao adicionar um fragmento à hierarquia de visualização deDialogFragmentcomFragmentContainerView(b/154366601).
- O método getDefaultViewModelProviderFactory()em fragmentos não falha mais ao hospedar seus fragmentos fora de uma atividade (b/153762914).
Versão 1.3.0-alpha03
1º de abril de 2020
Lançamento de androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 e androidx.fragment:fragment-testing:1.3.0-alpha03. A versão 1.3.0-alpha03 contém estas confirmações.
Mudanças na API
- Os métodos prepareCallemFragmentagora sãofinal(b/152439361).
Correções de bugs
- Correção de uma regressão introduzida no Fragment 1.3.0-alpha02ao usarBottomSheetDialogFragment(b/151652127, aosp/1263328, aosp/1265163).
- Correção de uma falha ao usar prepareCallde um fragmento após uma mudança de configuração (b/152137004).
- Foi corrigido um problema em que elementos compartilhados e transições de saída são ignorados ao usar setTargetFragment()(b/152023196).
- Do Fragment 1.2.4: as regras do Fragment ProGuard foram atualizadas para permitir a ofuscação de fragmentos mantidos (b/151605338).
- Do Fragment 1.2.4: a regra de lintFragmentLiveDataObservefoi desativada em classesDialogFragmentporque o ciclo de vida e o ciclo de visualização delas sempre estão em sincronia, o que torna seguro usarthisouviewLifecycleOwnerao chamarobserve(b/151765086).
Mudanças na dependência
- Os fragmentos dependem da Activity 1.2.0-alpha03, que teve melhorias significativas na API Activity Result introduzida na Activity1.2.0-alpha02.
Versão 1.3.0-alpha02
18 de março de 2020
Lançamento de androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 e androidx.fragment:fragment-testing:1.3.0-alpha02. A versão 1.3.0-alpha02 contém estas confirmações.
Novos recursos
- Foi adicionado suporte à API ActivityResultRegistryintroduzida na Activity1.2.0-alpha02para gerenciar os fluxosstartActivityForResult()+onActivityResult()erequestPermissions()+onRequestPermissionsResult()sem modificar métodos no seu Fragment, além de fornecer hooks para testar esses fluxos. Veja a atualização de Como gerar resultados com uma Activity (b/125158199).
Mudanças na API
- Agora, DialogFragmentfornece um construtor que usa um@LayoutRespara indicar o layout queonCreateView()precisa inflar por padrão (b/150327080).
- O uso do método onActivityCreated()foi descontinuado. O código relativo à visualização do fragmento precisa ser feito emonViewCreated(), que é chamado imediatamente antes deonActivityCreated(), e outros códigos de inicialização precisam estar emonCreate(). Para receber um callback especificamente quando oonCreate()da atividade for concluído, é necessário registrar umLifeCycleObservernoLifecycleda atividade emonAttach()e fazer a remoção assim que o callbackonCreate()for recebido (b/144309266).
Correções de bugs
- Do Fragment 1.2.3: foi corrigido um bug noDialogFragmentque causava umStackOverflowErrorao chamargetLayoutInflater()de dentro doonCreateDialog()(b/117894767, aosp/1258664).
- Do Fragment 1.2.3: redução do escopo das regras do ProGuard incluídas no Fragment para garantir que as classes de Fragment não usadas possam ser removidas (b/149665169).
- Do Fragment 1.2.3: foram corrigidos falsos positivos na verificação de lintUseRequireInsteadOfGetao usar um nome de variável local que sombreava o nome da propriedade Kotlin (b/149891163).
- Do Fragment 1.2.3:FragmentContainerViewnão gera mais umaUnsupportedOperationExceptionpara usar o construtor incorreto na visualização do layout (b/149707833).
Problemas conhecidos
- O BottomSheetDialogFragmentdeixou de posicionar corretamente a própria caixa de diálogo na tela (b/151652127).
Versão 1.3.0-alpha01
4 de março de 2020
Lançamento de androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 e androidx.fragment:fragment-testing:1.3.0-alpha01. A versão 1.3.0-alpha01 contém estas confirmações.
Novos recursos
- Foi adicionado suporte à API ViewTreeLifecycleOwner.get(View)adicionada no Lifecycle2.3.0-alpha01para que ela retorne oviewLifecycleOwnerdo fragmento comoLifecycleOwnerpara qualquer visualização retornada poronCreateView()(aosp/1182955).
Mudanças na API
- O uso do método setRetainInstance()em fragmentos foi descontinuado. Com a introdução de ViewModels, os desenvolvedores têm uma API específica para manter o estado que pode ser associado a gráficos de Activities, Fragments e Navigation . Isso permite que os desenvolvedores usem um Fragment normal não retido e mantenham o estado específico que querem reter separado, evitando uma fonte comum de vazamentos e mantendo as propriedades úteis de uma única criação e destruição do estado retido, ou seja, o construtor doViewModele o callbackonCleared()recebido (b/143911815).
- Com o lançamento de ViewPager2 1.0.0, as classesFragmentPagerAdaptereFragmentStatePagerAdapterpara interação comViewPagerforam descontinuadas. Consulte Migrar do ViewPager para o ViewPager2. (b/145132715).
Correções de bugs
- As regras do Fragment ProGuard agora mantêm corretamente apenas as classes Fragmentde construtores padrão que são usadas para todas as instânciasFragment, corrigindo uma regressão introduzida no Fragment1.2.1(b/149665169).
- As regras de lint require___()adicionadas no Fragment1.2.2não são mais falsos positivos em variáveis locais que compartilham o mesmo nome que os nomes das propriedades Kotlin sombreadas, ou seja,view(b/149891163).
- FragmentContainerViewnão gera mais um- UnsupportedOperationExceptionao usar a visualização de layout no Android Studio (b/149707833).
- Foi corrigido um problema em que fragmentos retidos adicionados após o estado ser salvo não eram recriados continuamente e destruídos com cada mudança de configuração (b/145832397).
Versão 1.2.5
Versão 1.2.5
10 de junho de 2020
Lançamento de androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 e androidx.fragment:fragment-testing:1.2.5. A versão 1.2.5 contém estas confirmações.
Correções de bugs
- O getViewLifecycleOwner()do fragmento agora é interrompido antes deonSaveInstanceState()ser chamado, espelhando o comportamento do ciclo de vida do fragmento Isso foi lançado anteriormente em Fragment1.3.0-alpha04(b/154645875).
- Chamar setMenuVisibility(false)em um fragmento agora modifica corretamente a visibilidade dos menus fornecidos pelos fragmentos filhos Isso foi lançado anteriormente em Fragment1.3.0-alpha04(b/153593580).
Versão 1.2.4
Versão 1.2.4
1º de abril de 2020
Lançamento de androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 e androidx.fragment:fragment-testing:1.2.4. A versão 1.2.4 contém estas confirmações.
Correções de bugs
- Atualização das regras do Fragment ProGuard para permitir a ofuscação de fragmentos mantidos (b/151605338).
- A regra de lint FragmentLiveDataObservefoi desativada em classesDialogFragmentporque o ciclo de vida e o ciclo de visualização estão sempre em sincronia, o que torna seguro usarthisouviewLifecycleOwnerao chamarobserve(b/151765086).
Versão 1.2.3
Versão 1.2.3
18 de março de 2020
Lançamento de androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 e androidx.fragment:fragment-testing:1.2.3. A versão 1.2.3 contém estas confirmações.
Correções de bugs
- Foi corrigido um bug em DialogFragmentque causava umStackOverflowErrorao chamargetLayoutInflater()emonCreateDialog()(b/117894767, aosp/1258665).
- Redução do escopo das regras do ProGuard incluídas no Fragment para garantir que as classes de Fragment não usadas possam ser removidas. (b/149665169).
- Foram corrigidos falsos positivos na verificação de lint UseRequireInsteadOfGetao usar um nome de variável local que ocultava o nome da propriedade Kotlin (b/149891163).
- FragmentContainerViewnão gera mais um- UnsupportedOperationExceptionpara usar o construtor incorreto na visualização do layout (b/149707833).
Versão 1.2.2
Versão 1.2.2
19 de fevereiro de 2020
Lançamento de androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 e androidx.fragment:fragment-testing:1.2.2. A versão 1.2.2 contém estas confirmações.
Novas verificações de lint
- O lint sugere o uso do viewLifecycleOwnercomoLifecycleOwnerpara chamadas deOnBackPressedDispatcheremonCreateView(),onViewCreated()eonActivityCreated()(b/142117657).
- Foi adicionada uma nova verificação de lint que confirma que você está usando a debugImplementationcorreta ao usar o artefatofragment-testing(b/141500106).
- Os fragmentos agora sugerem o uso dos métodos require___()associados para mensagens de erro mais descritivas em vez decheckNotNull(get___()),requireNonNull(get___())ouget___()!!para todas as APIs Fragment que incluem umgeterequireequivalente (aosp/1202883).
Correções de bugs
- Os arquivos do Fragment ProGuard foram corrigidos para evitar avisos de R8 (b/148963981).
- A verificação de lint existente foi melhorada, sugerindo o uso de viewLifecycleOwnerao usarobservepara gerenciar também a versão do método de extensãolivedata-ktxdeobserve(b/148996309).
- Correção da formatação de muitas verificações de lint (aosp/1157012).
Contribuições externas
- Em nome do Slack, agradecemos a Zac Sweers por contribuir com as verificações de lint require___()(aosp/1202883).
Versão 1.2.1
Versão 1.2.1
5 de fevereiro de 2020
Lançamento de androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 e androidx.fragment:fragment-testing:1.2.1.  A versão 1.2.1 contém estas confirmações.
Correções de bugs
- Fragmentos adicionados via métodos addereplaceque tomam uma instânciaClass(ou as versões reificadas de Kotlin) agora têm o construtor padrão mantido pelo ProGuard (b/148181315).
- FragmentStatePagerAdaptere- FragmentPagerAdapternão detectam mais exceções geradas por- FragmentManagerdurante a execução de- finishUpdate()(aosp/1208711).
- Foi corrigido um problema em que FragmentManager.findFragment()não funcionava com fragmentos adicionados usando a tag<fragment>(b/147784323).
- Os fragmentos inflados usando a tag <fragment>sempre recebem uma chamada paraonInflate()antes deonCreate()no layout (aosp/1215856).
- Chamar toString()em uma instânciaFragmentManagernão gera mais umaNullPointerExceptionquando a atividade já foi destruída (b/148189412).
Mudanças na dependência
- Fragmentos 1.2.1agora dependem do Lifecycle ViewModel SavedState2.2.0.
Versão 1.2.0
Versão 1.2.0
22 de janeiro de 2020
Lançamento de androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 e androidx.fragment:fragment-testing:1.2.0.  A versão 1.2.0 contém estas confirmações.
Mudanças importantes desde a versão 1.1.0
- FragmentContainerView: o FragmentContainerViewé o contêiner recomendado para fragmentos adicionados dinamicamente, substituindo o uso deFrameLayoutou outros layouts. Ele também oferece suporte para os mesmosclass,android:nameeandroid:tagopcional que a tag<fragment>, mas usa umFragmentTransactionnormal para adicionar esse fragmento inicial, em vez do caminho de código personalizado usado por<fragment>.
- Timing de onDestroyView(): agora os fragmentos aguardam a conclusão das animações de saída, transições de framework de saída e transições do AndroidX de saída (ao usar Transition1.3.0) antes de chamaronDestroyView().
- add()e- replace()baseado em classe: foram adicionadas novas sobrecargas de- add()e- replace()em- FragmentTransactionque levam- Class<? extends Fragment>e- Bundleopcional de argumentos. Esses métodos usam sua- FragmentFactorypara construir uma instância do Fragment a ser adicionada. As extensões Kotlin que usam tipos materializados (ou seja,- fragmentTransaction.replace<YourFragment>(R.id.container)) também foram adicionadas ao- fragment-ktx.
- Integração do ViewModel SavedState de Lifecycle: SavedStateViewModelFactoryagora é a fábrica padrão aplicada ao usarby viewModels(),by activityViewModels(), o construtorViewModelProviderouViewModelProviders.of()com um fragmento.
- Novas verificações de lint: nova verificação de lint que garante o uso de getViewLifecycleOwner()ao observarLiveDatadeonCreateView(),onViewCreated()ouonActivityCreated().
- Descontinuação de getFragmentManager(): os métodosgetFragmentManager()erequireFragmentManager()na API Fragment foram descontinuados e substituídos por um único métodogetParentFragmentManager(), que retorna o valor não nuloFragmentManagerao qual o fragmento é adicionado. Você pode usarisAdded()para determinar se é seguro fazer a chamada.
- Descontinuação de FragmentManager.enableDebugLogging(): o uso do método estáticoFragmentManager.enableDebugLoggingfoi descontinuado. O FragmentManager agora respeitaLog.isLoggable()para a tagFragmentManager, permitindo que você ative o registroDEBUGouVERBOSEsem recompilar seu app.
Problemas conhecidos
- Fragments referenciados somente pelo atributo classouandroid:nameem umaFragmentContainerViewnão são mantidos pelo ProGuard automaticamente, exigindo que você adicione manualmente uma regra de manutenção a cada classe de fragmento (b/142601969).
- Ao adicionar um NavHostFragmentusandoclassouandroid:nameem XML comFragmentContainerView, não usefindNavController()noonCreate()da sua atividade (b/142847973).
Versão 1.2.0-rc05
8 de janeiro de 2020
Lançamento de androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 e androidx.fragment:fragment-testing:1.2.0-rc05.  A versão 1.2.0-rc05 contém estas confirmações.
Correções de bugs
- Foi corrigida uma regressão no Fragment 1.2.0-rc04ao usar a tag<fragment>que fazia com queonViewCreated()fosse chamado incorretamente durante a destruição da atividade (b/146290333).
- Os Fragments adicionados com a tag <fragment>agora têm as próprias não configurações apagadas, mesmo quando estão apenas no layout, ou seja, apenas no layout de paisagem. Como consequência, esses fragmentos agora são movidos corretamente paraCREATED(criado) mesmo quando não estiverem no seu layout, em vez de serem instanciados, mas nunca passando por qualquer método de ciclo de vida (b/145769287).
Versão 1.2.0-rc04
18 de dezembro de 2019
Lançamento de androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 e androidx.fragment:fragment-testing:1.2.0-rc04.  A versão 1.2.0-rc04 contém estas confirmações.
Correções de bugs
- As animações foram ajustadas para TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEeTRANSIT_FRAGMENT_FADEpara evitar problemas visuais (b/145468417).
Versão 1.2.0-rc03
4 de dezembro de 2019
Lançamento de androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 e androidx.fragment:fragment-testing:1.2.0-rc03.  A versão 1.2.0-rc03 contém estas confirmações.
Correções de bugs
- Foi corrigida uma mudança de comportamento não intencional em que fragmentos que foram removidos ainda eram retornados por findFragmentById()/findFragmentByTag()enquanto as animações/transições de saída deles fossem executadas (b/143982969, aosp/1167585).
- Os fragmentos filhos agora são interrompidos corretamente antes dos pais, quando a atividade que os contém chama onSaveInstanceState()(b/144380645).
- Foi corrigido um problema em que as visualizações eram incorretamente marcadas como INVISIBLE(invisível) depois de remover um fragmento oculto (b/70793925).
- Agora as transições compartilhadas de elementos de Fragment processam as Views que foram rotacionadas, dimensionadas etc. (b/142835261).
Atualizações da documentação
- Esclarecimento da documentação sobre a descontinuação de setUserVisibleHint()(b/143897055).
- Documentação aprimorada sobre setFragmentFactory()egetFragmentFactory()para indicar melhor que a configuração deFragmentFactorytambém vai afetar os FragmentManagers filhos (aosp/1170095).
Mudanças na dependência
- Os fragmentos agora dependem do Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03e da Activity1.1.0-rc03.
Versão 1.2.0-rc02
7 de novembro de 2019
Lançamento de androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 e androidx.fragment:fragment-testing:1.2.0-rc02.  A versão 1.2.0-rc02 contém estas confirmações.
Correções de bugs
- No Kotlin, o LintFix para uso de getViewLifecycleOwner()ao observarLiveDatadeonCreateView(),onViewCreated()ouonActivityCreated()(introduzido no Fragment1.2.0-rc01) agora usa a sintaxe de acesso à propriedade KotlinviewLifecycleOwnerem vez degetViewLifecycleOwner()(aosp/1143821).
Versão 1.2.0-rc01
23 de outubro de 2019
Lançamento de androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 e androidx.fragment:fragment-testing:1.2.0-rc01.  A versão 1.2.0-rc01 contém estas confirmações.
Novos recursos
- FragmentContainerViewagora tem suporte ao atributo- class, além de- android:name, espelhando a funcionalidade da tag- <fragment>(b/142722242).
- Foi adicionada uma nova verificação de lint que garante que você está usando getViewLifecycleOwner()ao observar oLiveDatadeonCreateView(),onViewCreated()ouonActivityCreated()(b/137122478).
Correções de bugs
- Os callbacks onDismisseonCancelemDialogFragmentagora garantem que aDialogInterfacetransmitida a eles seja de valor não nulo e quegetDialog()retorne valores não nulos quando executado (b/141974033).
- FragmentContainerViewagora adiciona o fragmento definido por- classou- android:namecomo parte da inflação, garantindo que- findFragmentById()e- findFragmentByTag()funcionem imediatamente depois (b/142520327).
- Foi corrigida uma IllegalStateExceptionemFragmentContainerViewquando o estado estava sendo salvo (b/142580713).
- Foi corrigida uma UnsupportedOperationExceptionemFragmentContainerViewquando a classeFragmentContainerViewé ofuscada (b/142657034).
Problemas conhecidos
- Fragments referenciados somente pelo atributo classouandroid:nameem umaFragmentContainerViewnão são mantidos pelo ProGuard automaticamente, exigindo que você adicione manualmente uma regra de manutenção a cada classe de fragmento Desativamos a regra de Lint que sugere a mudança paraFragmentContainerViewaté que isso seja corrigido poraapt2(b/142601969).
Versão 1.2.0-beta02
11 de outubro de 2019
Lançamento de androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 e androidx.fragment:fragment-testing:1.2.0-beta02.  A versão 1.2.0-beta02 contém estas confirmações.
Correções de bugs
- Foi corrigido um problema em que o onInflate()do Fragment não recebia os atributos adequados deFragmentContainerView, casos importantes comoNavHostFragment(b/142421837).
Versão 1.2.0-beta01
9 de outubro de 2019
Lançamento de androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 e androidx.fragment:fragment-testing:1.2.0-beta01.  A versão 1.2.0-beta01 contém estas confirmações.
Novos recursos
- FragmentContainerViewinclui suporte à adição de um fragmento inicial que aceite os atributos XML- android:namee, opcionalmente,- android:tag. Ao contrário da tag- <fragment>, a- FragmentContainerViewusa uma- FragmentTransactionnormal internamente para adicionar o fragmento inicial, permitindo mais operações de- FragmentTransactionem- FragmentContainerView, e possibilita o uso da vinculação de visualizações para o layout (b/139830628, b/141177981).
- Fragments agora contém um aviso Lint que oferece uma correção rápida para substituir <fragment>porFragmentContainerView(b/139830056).
Correções de bugs
- Uma ClassCastExceptionao usarandroidx.transitionfoi corrigida (b/140680619).
- Agora, ao usar Transition 1.3.0-beta01, os fragmentos aguardam as transições deandroidx.transition, além das animações e transições de framework, que foram corrigidas no Fragment1.2.0-alpha03e Fragment1.2.0-alpha02, respectivamente, serem concluídas antes de enviaronDestroyView()(aosp/1119841).
- Ao usar Transition 1.3.0-beta01, os fragmentos agora cancelam as transiçõesandroidx.transitioncorretamente antes de iniciar novas transições/animações no mesmo contêiner (aosp/1119841).
- Foi corrigido um problema na API 17 e versões anteriores ao usar transições androidx.transitionna visualização raiz do fragmento ao usarFragmentContainerView(b/140361893).
- O artefato fragment-testingagora depende do AndroidX Test1.2.0para corrigir uma incompatibilidade com o Espresso 3.2.0 mais recente (b/139100149).
- O uso de Log.wno FragmentManager foi removido (aosp/1126468).
Problemas conhecidos
- O método onInflate()do Fragment não recebe atributos adequados deFragmentContainerView, casos importantes comoNavHostFragment(b/142421837).
Versão 1.2.0-alpha04
18 de setembro de 2019
Lançamento de androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 e androidx.fragment:fragment-testing:1.2.0-alpha04.  A versão 1.2.0-alpha04 contém estas confirmações.
Mudanças na API
- Os métodos getFragmentManager()erequireFragmentManager()emFragmentforam descontinuados e substituídos por um únicogetParentFragmentManager(), que retorna o valor não nuloFragmentManagerao qual o fragmento é adicionado. Você pode usarisAdded()para determinar se a chamada é segura (b/140574496).
- O uso do método estático FragmentManager.enableDebugLoggingfoi descontinuado. FragmentManager agora respeitaLog.isLoggable()para a tagFragmentManager, permitindo que você ative o registroDEBUGouVERBOSEsem recompilar seu app (aosp/1116591).
Correções de bugs
- Agora, os fragmentos são destruídos corretamente enquanto as animações de saída em outros fragmentos estão em execução (b/140574199).
- Foi corrigido um problema em que fragmentos chamavam Activity.findViewById()em locais que antes não chamavam (aosp/1116431).
Versão 1.2.0-alpha03
5 de setembro de 2019
Lançamento de androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 e androidx.fragment:fragment-testing:1.2.0-alpha03.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Mudanças na API
- FragmentContainerViewagora é- final(b/140133091).
Correções de bugs
- FragmentContainerViewagora inverte a ordem de exibição corretamente ao destacar fragmentos da backstack (b/139104187).
- Foi corrigido um problema em que a animação errada era executada ao remover um fragmento e adicionar outro ao mesmo tempo (b/111659726).
- Agora, os fragmentos aguardam o término das transições (além das animações, que eram fixas no Fragment 1.2.0-alpha02) antes de encerrar e enviaronDestroyView()(b/138741697).
Versão 1.2.0-alpha02
7 de agosto de 2019
Lançamento de androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 e androidx.fragment:fragment-testing:11.2.0-alpha02.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- SavedStateViewModelFactoryagora é a fábrica padrão empregada ao usar- by viewModels(),- by activityViewModels(), o construtor- ViewModelProviderou- ViewModelProviders.of()com um- Fragment(b/135716331).
- As animações padrão ao usar TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADEcomsetTransitionem umaFragmentTransactionforam atualizadas para corresponder às animações usadas pelas atividades nos dispositivos Android 10 (aosp/1012812, aosp/1014730).
Mudanças na API
- Introdução de FragmentContainerViewcomo o contêiner altamente recomendado para fragmentos adicionados dinamicamente, substituindo o uso deFrameLayoutetc. Essa ação corrige problemas relacionados à ordem z de animações e inserções de janelas enviadas para fragmentos (b/37036000, aosp/985243, b/136494650).
- Adicionado um novo método FragmentManager.findFragment(View)estático para recuperar o Fragment de uma visualização inflada por um fragment. Uma extensão Kotlin também está disponível emfragment-ktx. (aosp/1090757).
- Adicionadas novas sobrecargas de add()ereplace()emFragmentTransaction, que usaClass<? extends Fragment>eBundleargumentos opcionais. Esses métodos usam suaFragmentFactorypara construir uma instância do Fragment a ser adicionada. A extensão Kotlin que usa tipos materializados (ou seja,fragmentTransaction.replace<YourFragment>(R.id.container)) também foi adicionada aofragment-ktx(b/126124987).
- Foram adicionadas anotações @MainThreadaos callbacks de ciclo de vida deFragment(b/127272564).
- O uso das APIs relacionadas ao título da navegação estrutural em FragmentTransactioneFragmentManager.BackStackEntryfoi descontinuado (b/138252944).
- O uso do método setTransitionStyleemFragmentTransactionfoi descontinuado (aosp/1011537).
- Vários dos métodos em FragmentManagernão são maisabstract. O próprioFragmentManagerpermaneceabstracte não pode ser diretamente instanciado ou estendido. Você vai continuar recebendo apenas uma instância existente degetSupportFragmentManager(),getChildFragmentManager()etc.
Correções de bugs
- Do Fragment 1.1.0-rc04: agora, as transições adiadas nos fragmentos removidos por destaque são corretamente canceladas (b/138251858).
- Do Fragment 1.1.0-rc03: corrigido um problema em que chamarpostponeEnterTransition()com um tempo limite mais de uma vez não cancelava os tempos limites anteriores (b/137797118).
- Do Fragment 1.1.0-rc02: foi corrigida uma falha emFragmentPagerAdaptereFragmentStatePagerAdapterao remover o item atual (b/137209870).
- Agora, os Fragments aguardam o término das animações antes de enviar onDestroyView()(b/136110528).
- Agora, as animações de fragmentos filhos e descendentes são tratadas corretamente ao animar o fragmento pai (b/116675313).
- Foi corrigida uma NullPointerExceptionao usar transições de elementos compartilhados e combinar operações de remoção e de adição (b/120507394).
- Adicionada uma solução alternativa a IllegalStateExceptions ao usarFragmentPagerAdaptereFragmentStatePagerAdapterem testes Robolectric (b/137201343).
Versão 1.2.0-alpha01
2 de julho de 2019
Lançamento de androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 e androidx.fragment:fragment-testing:1.2.0-alpha01.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- Agora, o FragmentManager chama requestApplyInsets()depois de anexar a visualização do fragmento e logo antes de chamaronViewCreated(), garantindo que sua visualização tenha sempre as inserções corretas (b/135945162).
Correções de bugs
- Correção de uma NullPointerExceptionao remover umaFragmentTransactionque usavasetPrimaryNavigationFragment()antes dereplace()(b/134673465).
Versão 1.1.0
Versão 1.1.0
5 de setembro de 2019
Lançamento de androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 e androidx.fragment:fragment-testing:1.1.0.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Mudanças importantes desde a versão 1.0.0
- fragment-testing: o artefato fragment-testingfornece uma classeFragmentScenariopara testar um fragmento isoladamente. Consulte Testar a documentação dos fragmentos do seu app para saber mais detalhes.
- FragmentFactory: agora, é possível definir uma FragmentFactoryem umFragmentManagerpara gerenciar a criação de instâncias de fragmentos, removendo a exigência rigorosa de ter um construtor sem argumento.
- Delegações de propriedade Kotlin para ViewModels: o artefato fragment-ktxagora contém dois representantes de propriedade Kotlin,by viewModels(), para acessar ViewModels associados ao fragmento individual, eby activityViewModels(), para acessar ViewModels com escopo para a atividade.
- Máximo de Lifecycle: agora, é possível definir um estado máximo de Lifecycle para um fragmento chamando setMaxLifecycle()em umaFragmentTransaction. Isso substitui asetUserVisibleHint()descontinuada.FragmentPagerAdaptereFragmentStatePagerAdaptertêm um novo construtor que permite alternar para o novo comportamento.
- Construtor AppCompatActivity LayoutId: subclasses de FragmentActivityagora podem optar por chamar um construtor emFragmentActivityque leva um IDR.layout, indicando o layout que será definido como a visualização de conteúdo, em vez de chamarsetContentView()emonCreate(). Isso não altera a exigência de que sua subclasse tenha um construtor sem argumento.
- Construtor Fragment LayoutId: subclasses de Fragmentagora podem optar por chamar um construtor emFragmentque leva um IDR.layout, indicando o layout que será usado para esse fragmento, em vez de substituironCreateView(). O layout inflado pode ser configurado emonViewCreated().
- Adiar com tempo limite: foi adicionada uma nova sobrecarga de postponeEnterTransition()que tem um tempo limite.
Versão 1.1.0-rc04
7 de agosto de 2019
Lançamento de androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 e androidx.fragment:fragment-testing:1.1.0-rc04.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Correções de bugs
- Agora, as transições adiadas nos fragmentos removidos são corretamente canceladas (b/138251858).
Versão 1.1.0-rc03
19 de julho de 2019
Lançamento de androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 e androidx.fragment:fragment-testing:1.1.0-rc03.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Correções de bugs
- Foi corrigido um problema em que chamar postponeEnterTransition()com um tempo limite mais de uma vez não cancelava os tempos limite anteriores (b/137797118).
Versão 1.1.0-rc02
17 de julho de 2019
Lançamento de androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 e androidx.fragment-testing:fragment:1.1.0-rc02.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Correções de bugs
- Foi corrigida uma falha em FragmentPagerAdaptereFragmentStatePagerAdapterao remover o item atual (b/137209870).
Versão 1.1.0-rc01
2 de julho de 2019
Lançamento de androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 e androidx.fragment:fragment-testing:1.1.0-rc01.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Correções de bugs
- Agora, os Fragments atualizam corretamente a própria visibilidade ao usar as operações show()ouhide()enquanto a transição é executada (b/133385058).
- Correção de uma NullPointerExceptionao remover umaFragmentTransactionque usavasetPrimaryNavigationFragment()antes dereplace()(b/134673465).
Versão 1.1.0-beta01
5 de junho de 2019
Lançamento de androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 e androidx.fragment:fragment-testing:1.1.0-beta01.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Correções de bugs
- Agora, o aninhamento dos callbacks de androidx.lifecycle.Lifecycle(relacionados especificamente comSTARTED,RESUMED,PAUSED,STOPPEDeDESTROYED) para fragmentos aninhados é feito corretamente (b/133497591).
- As instâncias de OnBackPressedCallbackregistradas noonCreate()de um Fragment agora têm precedência sobre o FragmentManager filho (b/133175997).
- Os fragmentos filhos não são mais animados quando o fragmento pai está sendo substituído (b/121017790).
- Agora, as animações e transições de Fragments são ignoradas ao usar animateLayoutChanges="true", corrigindo um problema em que os Fragments não eram destruídos corretamente (b/116257087).
Versão 1.1.0-alpha09
16 de maio de 2019
Lançamento de androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 e androidx.fragment:fragment-testing:1.1.0-alpha09.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Mudanças na API
- Agora, os fragmentos recebem um callback para um novo método onPrimaryNavigationFragmentChanged(boolean)quando o fragmento de navegação principal muda (aosp/960857).
Correções de bugs
- Os itens de menu inflados por um fragmento filho agora são removidos corretamente quando o fragmento pai é removido b/131581013.
Versão 1.1.0-alpha08
7 de maio de 2019
Lançamento de androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 e androidx.fragment:fragment-testing:1.1.0-alpha08.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Essa versão é incompatível com Preferences 1.1.0-alpha01 a 1.1.0-alpha04. faça um upgrade para a Preferences 1.1.0-alpha05 ao usar essa versão do Fragments.
Novos recursos
- Foi adicionada uma nova sobrecarga de postponeEnterTransition(), que usa um tempo limite. Depois disso, o fragmento chamastartPostponedEnterTransition()automaticamente (b/120803208).
Mudanças na API
- Alteração interruptiva: o método instantiatedeFragmentFactory, anteriormente descontinuado e que usava umBundle, foi removido (aosp/953856).
- Alteração interruptiva: as constantes RESUME_ONLY_CURRENT_FRAGMENTeUSE_SET_USER_VISIBLE_HINTemFragmentPagerAdaptereFragmentStatePagerAdapterforam renomeadas paraBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTeBEHAVIOR_SET_USER_VISIBLE_HINT, respectivamente (aosp/954782).
Correções de bugs
- Fragments que tiveram o ciclo de vida limitado por setMaxLifecycle()não são mais retomados antes de atingirem o estado final (b/131557151).
- Ao usar setMaxLifecycle(Lifecycle.State.CREATED), a visualização de Fragments é devidamente destruída (aosp/954180).
Versão 1.1.0-alpha07
25 de abril de 2019
Lançamento de androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 e androidx.fragment:fragment-testing:1.1.0-alpha07.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- Agora você pode definir um estado máximo do ciclo de vida para um fragmento chamando setMaxLifecycle()em umaFragmentTransaction. Isso substitui asetUserVisibleHint()descontinuada.FragmentPagerAdaptereFragmentStatePagerAdaptertêm um novo construtor que permite alternar para o novo comportamento. (b/129780800).
Mudanças na API
- moveToState(STARTED)em- FragmentScenarioagora só pode ser chamado em dispositivos com o nível 24 ou mais recente da API (b/129880016).
Mudanças de comportamento
- Como consequência de (b/129907905), os fragmentos na backstack não vão receber um callback para onCreateView()quando a atividade de hospedagem for recriada. Agora,onCreateView()só vai ser chamado quando o fragmento se tornar visível (ou seja, quando a backstack for removida).
Correções de bugs
- Corrigido um problema ao usar uma tag <fragment>em XML e o construtorcontentLayoutIddeFragmentActivityouAppCompatActivity(b/129907905).
- Foi corrigido um problema em que os fragmentos na backstack não eram movidos para pelo menos CREATED(criado) depois de uma mudança na configuração, fazendo com que os ViewModels e os fragmentos filhos retidos não fossem descartados corretamente (b/129593351).
- Foi corrigida uma falha em restoreSaveStatecausada por uma dessincronização dos fragmentos retidos depois do estado da instância ser salvo (b/130433793, aosp/947824).
- Foram corrigidos problemas em que um OnBackPressedCallbackadicionado com um ciclo de vida do fragmento não era chamado se oFragmentManagertivesse uma backstack. Consulte androidx.activity 1.0.0-alpha07 para mais detalhes. (aosp/948209).
- Os fragmentos não aplicam mais LAYER_TYPE_HARDWAREpara animações. Se você precisar especificamente de uma animação da camada de hardware, faça a definição dela como parte da sua animação. (b/129486478).
Versão 1.1.0-alpha06
3 de abril de 2019
Lançamento de androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 e androidx.fragment:fragment-testing:1.1.0-alpha06.  As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- As exceções geradas pelo FragmentManager agora incluem o nome do Fragment na mensagem. (b/67759402)
Mudanças na API
- Fragmente- FragmentActivityagora contêm um segundo construtor que usa um- @LayoutRes int, que substitui o comportamento anterior de anotar sua classe com- @ContentView. Essa abordagem funciona nos módulos do app e da biblioteca (b/128352521).
- Agora o onActivityResult()de FragmentActivity está marcado corretamente como@CallSuper(b/127971684).
- O método instantiatede FragmentFactory que usa um argumento Bundle foi descontinuado, e os apps precisam usar a nova sobrecargainstantiateque não usa um Bundle (b/128836103).
- Os métodos FragmentScenarioagora estão devidamente anotados com@StyleRes(aosp/924193).
- O uso de FragmentTabHostfoi descontinuado (b/127971835).
- getThemedContext()do FragmentActivity foi removido (aosp/934078).
Correções de bugs
- Foi corrigida uma regressão em 1.1.0-alpha05 que fazia com que o fragmento recebido piscasse na tela (b/129405432).
- Corrigido um problema em que o fragmento de navegação principal era perdido depois de uma série de operações popBackStack+replace+popBackStack (b/124332597).
- Foi corrigido um problema ao usar construtores @ContentViewna sua atividade ao restaurar o estado do fragmento (b/127313094).
- Foi corrigida a lógica de setTargetFragment()ao substituir um fragmento de destino existente por um fragmento ainda não anexado ao FragmentManager (aosp/932156).
Versão 1.1.0-alpha05
13 de março de 2019
Lançamento de androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 e androidx.fragment:fragment-testing:1.1.0-alpha05.  A lista completa de confirmações incluídas nessa versão pode ser encontrada neste link.
Novos recursos
- Pesquisas da anotação @ContentViewagora estão em cache (b/123709449).
Mudanças de comportamento
- A ação de chamar remove(),hide(),show(),detach()esetPrimaryNavigationFragment()com um Fragment anexado a um FragmentManager diferente agora gera umaIllegalStateException, em vez de causar uma falha silenciosa (aosp/904301).
Correções de bugs
- onNewIntentpara- FragmentActivityagora é corretamente marcado com- @CallSuper(b/124120586).
- Foi corrigido um problema em que o onDismiss()doDialogFragmentpodia ser chamado duas vezes ao usargetDialog().dismiss()ougetDialog().cancel()(b/126563750).
Versão 1.1.0-alpha04
7 de fevereiro de 2019
Lançamento de androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 e androidx.fragment:fragment-testing 1.1.0-alpha04.
Novos recursos
- Foi adicionado suporte à anotação de classe @ContentView, que permite indicar qual arquivo XML de layout precisa ser inflado como uma alternativa para a modificação deonCreateView(). É recomendado fazer um trabalho relacionado à visualização emonViewCreated(). (aosp/837619).
- Agora, fragment-testingdepende doandroidx.test:core-ktx1.1.0 estável (b/121209673).
- Agora, você pode usar openActionBarOverflowOrOptionsMenucomFragmentScenariopara testar os menus de opções hospedados do Fragment (b/121126668).
Mudanças na API
- Foi adicionado um método requireArguments()que retorna um@NonNull Bundleou gera umaIllegalStateException(b/121196360).
- Foi adicionada uma observação de que getLifecycle(),getViewLifecycleOwner()egetViewLifecycleOwnerLiveData()não podem ser substituídos e serão considerados como finais em uma futura versão. Registre uma solicitação de recurso se você estiver modificando esse método atualmente. (aosp/880714).
- Incluída uma observação de que getViewModelStore()não precisa ser modificado e que será considerado final em uma versão futura. Registre uma solicitação de recurso se você estiver substituindo esse método atualmente (aosp/880713).
- Foi corrigido um problema de suporte binário a versões anteriores de Fragments (aosp/887877) (aosp/889834).
Correções de bugs
- Os fragmentos de destino são limpos corretamente quando você transmite nullparasetTargetFragment()(aosp/849969).
- Foi corrigido um problema em que fragmentos de destino às vezes ficavam indisponíveis em onDestroy()ou depois dele (b/122312935).
- O onDismiss() do DialogFragment agora é chamado antes de onDestroy()(aosp/874133) (aosp/890734).
Versão 1.1.0-alpha03
17 de dezembro de 2018
Novos recursos
- Fragment agora implementa BundleSavedStateRegistryOwnere depende da biblioteca SavedState recém-lançada (aosp/824380).
- Um delegado da propriedade by activityViewModelsKotlin foi adicionado para recuperar os ViewModels associados à Activity contida (b/119050253).
- O delegado da propriedade by viewModelsKotlin foi expandido para usar um método lambda opcional para extrair oViewModelStoreOwner, permitindo transmitir o fragmento pai ou outroViewModelStoreOwnerpersonalizado com um código comoval viewModel: MyViewModel by viewModels(::requireParentFragment)(b/119050253).
Mudanças na API
- FragmentScenarioagora permite especificar um tema, como- Theme.AppCompat(b/119054431). Essa é uma alteração interruptiva.
- Adição de um método requireView()que retorna um@NonNull Viewou gera umaIllegalStateException(b/120241368).
- Foi adicionado um método requireParentFragment()que retorna um@NonNull Fragmentou gera umaIllegalStateException(b/112103783).
Correções de bugs
- Foi corrigida a IllegalStateException: falha ao salvar o estado (b/120814739).
- Agora, os Fragments restaurados do estado da instância salva sempre recebem um Bundlenão nulo (b/119794496).
- Os fragmentos removidos não reutilizam mais o objeto Lifecyclese forem adicionados novamente (b/118880674).
Versão 1.1.0-alpha02
3 de dezembro de 2018
Novos recursos
- Agora, as extensões Kotlin do FragmentScenario permitem usar uma lambda para a construção do fragmento como uma alternativa à transmissão em uma instância FragmentFactory(aosp/812913).
Correções de bugs
- Foi corrigida uma IllegalStateException ao usar fragmentos aninhados na backstack (b/119256498).
- Corrigida uma falha ao usar FragmentScenario.recreate()comFragmentFactory(aosp/820540).
- Foi corrigido um problema em que os fragmentos de destino não podiam ser acessados depois que o fragmento era removido (aosp/807634).
Versão 1.1.0-alpha01
5 de novembro de 2018
Essa é a primeira versão do artefato fragment-testing e FragmentScenario, criada com base nas APIs androidx.test:core.  Consulte a documentação de testes do Fragment para saber mais detalhes.
Novos recursos
- Nova classe FragmentScenario para testar Fragments isoladamente.
- Agora você pode definir uma FragmentFactoryem qualquerFragmentManagerpara controlar como novas instâncias de Fragment são instanciadas.
- Inclusão de um novo delegado da propriedade by viewModels()Kotlin para recuperar ViewModels de um Fragment.
- Eventos de entrada pendentes, como cliques, agora são cancelados no onStop()de um Fragment.
Mudanças na API
- As anotações de nulidade foram significativamente expandidas na superfície da API do Fragment.
Correções de bugs
- Foi corrigido um problema que causava falhas nas operações de fragmentos no LiveData (b/77944637)).
Problemas conhecidos
- Fragments de destino não podem ser acessados depois que um Fragment é removido do FragmentManager.
- fragment-testingdepende de- androidx.test:core:1.0.0-beta01, em vez do- androidx.test:core:1.0.0correto.
