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 Transition com Transition 1.4.1 ou versões anteriores |
R.transition |
Não |
AndroidX Transition com 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 novaWrongNestedHierarchyViolationque detecta quando um fragmento filho está aninhado dentro da hierarquia de visualização do elemento pai, mas não foi adicionado aochildFragmentManagerdo 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-testingeandroidx.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 novaWrongNestedHierarchyViolationque detecta quando um fragmento filho está aninhado dentro da hierarquia de visualização do elemento pai, mas não foi adicionado aochildFragmentManagerdo 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 usandoallowViolation()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 usaComponentDialogcomo a caixa de diálogo padrão retornada poronCreateDialog()(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 usandoallowViolation()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 Lifecycle2.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étodogetFragment()que retorna o fragmento que foi adicionado mais recentemente ao contêiner. Esse método usa a mesma lógica defindFragmentById()com o ID daFragmentContainerView, mas permite encadear a chamadaval navController = binding.container.getFragment<NavHostFragment>().navControllerO
FragmentScenarioagora implementa oCloseable, permitindo o uso com o métodousedo Kotlin ou com try-with-resourcesFoi 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 fragmentosA 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 usaSavedStateRegistryinternamente para salvar o próprio estado. Os métodossaveAllState()erestoreSavedState()também foram descontinuados emFragmentController. Se você estiver usando oFragmentControllerpara hospedar fragmentos fora daFragmentActivity, implementeFragmentHostCallbacksemSavedStateRegistryOwner(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 classesFragmentespecíficas deViolations no modo restrito, possibilitando que essa classe ignore penalidades (Ib4e5d, b/184786736).A classe
ViolationdeFragmentStrictModefoi 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). CadaViolationcontém o seguinte:WrongFragmentContainerViolationagora contém oViewGroupa que oFragmentestava tentando ser adicionado (I83c75, b/187871150).TargetFragmentUsageViolationfoi ampliada emSetTargetFragmentUsageViolation,GetTargetFragmentUsageViolationeGetTargetFragmentRequestCodeUsageViolation, comSetTargetFragmentUsageViolationcontendo o fragmento de destino e o código de solicitação (I741b4, b/187871150).SetUserVisibleHintViolationagora contém o valor booleano transmitido parasetUserVisibleHint()(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 doFragmentque causou a violação (I0544d, b/187871150).RetainInstanceUsageViolationagora é abstrata e tem duas subclasses,SetRetainInstanceUsageViolationeGetRetainInstanceUsageViolation, 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 atributofitsSystemWindowde 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étodogetFragment()que retorna o fragmento que foi adicionado mais recentemente ao contêiner. Esse método usa a mesma lógica defindFragmentById()com o ID daFragmentContainerView, mas permite encadear a chamada (Ife17a, b/162527857).val navController = binding.container.getFragment<NavHostFragment>().navControllerFoi 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 cadaFragmentreceba um novo conjunto deWindowInsets, 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 classeDialogpersonalizada, corrigindo problemas de hierarquia de visualização ao reutilizar códigos usados internamente por caixas de diálogo comoBottomSheetDialog(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 Activity1.2.0para gerenciarstartActivityForResult()+onActivityResult(), bem como fluxosrequestPermissions()+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 menosSTARTED(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 callbackonAttachFragment()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.Melhorias de
FragmentScenario: a classeFragmentScenariodo artefatofragment-testingfoi reescrita em Kotlin e recebeu várias melhorias:FragmentScenarioagora usasetMaxLifecycle()para implementarmoveToState(), 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 umLifecycle.Stateinicial para possibilitar a declaração do estado do fragmento antes da mudança para cadaLifecycle.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 APIsViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View)eViewTreeSavedStateRegistryOwneradicionadas no Lifecycle2.3.0e SavedState1.1.0para retornar o Fragment como oViewModelStoreOwnere umSavedStateRegistryOwnereLifecycleOwnerligados ao ciclo de vida de visualização do fragmento ao usar umaViewem umFragment.Mudanças de animação de
TRANSIT_: os efeitos padrão de fragmento,TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSEeTRANSIT_FRAGMENT_FADE, agora usamAnimatorem vez deAnimation. Os recursos usados para criar esses animadores agora são particulares.Descontinuação de
setRetainInstance(): o uso do métodosetRetainInstance()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 doViewModele o callbackonCleared()recebido.Descontinuação do adaptador ViewPager 1: com o lançamento do ViewPager2
1.0.0, o uso das classesFragmentPagerAdaptereFragmentStatePagerAdapterpara interagir comViewPagerfoi 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 deonCreateOptionsMenu()e não é mais chamado quando um fragmento pai chamasetMenuVisibility(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 deClassLoader. 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 estadoLifecycleparaINITIALIZING, desde que o fragmento não tenha sido movido paraCREATED(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 chamarfindFragmentById()oufindFragmentByTag()do callbackonAttachFragment()(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 APIOnContextAvailableListenerintroduzida na atividade1.2.0-alpha08para restaurar o estado doFragmentManager. Todos os listeners adicionados às subclasses daFragmentActivityserão executados depois desse listener. (I513da)
Correções de bugs
ActivityOptionsaprovadas ao usarstartIntentSenderForResult()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 deCREATED(criado),STARTED(iniciado) ouRESUMED(retomado), em vez de sempre mover o fragmento para o estadoRESUMED(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 usasetMaxLifecycle()para implementarmoveToState(), 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 umUnsupportedOperationExceptionao 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 umUnsupportedOperationExceptionpara 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). FragmentStatePagerAdaptereFragmentPagerAdapternão detectam mais exceções geradas porFragmentManagerdurante a execução definishUpdate()(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()ereplace()baseado em classe: foram adicionadas novas sobrecargas deadd()ereplace()emFragmentTransactionque levamClass<? extends Fragment>eBundleopcional de argumentos. Esses métodos usam suaFragmentFactorypara 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 aofragment-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 atributoclass, além deandroid: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 porclassouandroid:namecomo parte da inflação, garantindo quefindFragmentById()efindFragmentByTag()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 XMLandroid:namee, opcionalmente,android:tag. Ao contrário da tag<fragment>, aFragmentContainerViewusa umaFragmentTransactionnormal internamente para adicionar o fragmento inicial, permitindo mais operações deFragmentTransactionemFragmentContainerView, 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 usarby viewModels(),by activityViewModels(), o construtorViewModelProviderouViewModelProviders.of()com umFragment(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)emFragmentScenarioagora 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
FragmenteFragmentActivityagora 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
onNewIntentparaFragmentActivityagora é 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, comoTheme.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 deandroidx.test:core:1.0.0-beta01, em vez doandroidx.test:core:1.0.0correto.