Fragmento
Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
30 de outubro de 2024 | 1.8,5 | - | - | - |
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.5" // 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.5" // 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.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
IllegalStateException
acionado porsaveBackStack
somente após um gesto de volta preditivo ser 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
- Correção de um problema em que pressionar rapidamente o botão "Voltar" do sistema ou fazer um gesto de volta rapidamente causava falhas nos fragmentos ao usar o AndroidX Transitions. (Ibc038, b/364804225).
- Correção de um problema em fragmentos em que interromper um gesto de volta preditiva enviava o gerenciador de fragmentos para um estado indefinido e até mostrava o fragmento errado. (If82e2, b/338624457).
- Uma
UninitializedPropertyAccessException
emAndroidFragment
foi corrigida ao trocar dinamicamente a classe que a instânciaAndroidFragment
está 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
- Agora, o
FragmentManager
leva em conta corretamente as operações pendentes ao processar o gesto de volta preditiva. Isso garante que a restauração do sistema não cause mais umaIndexOutOfBoundsException
. (I9ba32, b/342316801). - O
AndroidFragment
nã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
AndroidFragment
agora gerencia corretamente os casos em que o fragmento pai é colocado na backstack do fragmento, evitando problemas de "Nenhuma visualização encontrada para o ID" ao retornar para esse fragmento (I94608).- Os fragmentos adicionados pelo método
FragmentTransaction.add
que usa umViewGroup
agora aguardamonContainerAvailable
antes de avançar paraonStart()
Isso afeta os usuários dessa API, comoAndroidFragment
, que agora espera que aAndroidFragment
entre novamente na composição antes de passar 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
DESTROYED
ao iniciar um gesto de volta preditivo Agora, eles são mantidos no estadoCREATED
até 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-compose
agora contém umComposable
AndroidFragment
que permite adicionar fragmentos à hierarquia do Compose pelo 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 para a abordagem anteriormente recomendada de usarAndroidViewBinding
para inflar um fragmento. - O callback
onBackStackChangeCancelled
na interfaceOnBackStackChangedListener
doFragmentManager
agora é acionado como parte da execução de operações noFragmentManager
, alinhando-o ao 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
onBackStackChangeCancelled
na interfaceFragmentManagers OnBackStackChangedListener
agora é acionado 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
: a volta preditiva agora só é executada para transações em que todos os fragmentos têm um Animator ou uma transição do AndroidX que pode ser buscada. 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
: foram adicionados registros para indicar por que a configuração de umsharedElement
sem 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 uma transação em que todas as outras transições fossem 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
AndroidFragment
Composable
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 pode ser usado como uma substituição direta para oComposable
do AndroidViewBinding.(b/312895363, Icf841).
Mudanças na documentação
- Atualizamos a documentação das APIs
OnBackStackChangedListener
para indicar quando elas são chamadas e como devem ser usadas. (I0bfd9).
Atualização de dependências
- O Fragment agora depende do Instalador de perfil 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 animador ou uma transição do AndroidX que pode ser buscada. 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 para o gesto de volta preditivo
- Os fragmentos agora oferecem suporte à volta preditiva no app ao usar
Animator
ou a AndroidX Transition 1.5.0. Isso permite que os usuários usem o gesto "Voltar" para conferir o fragmento anterior procurando o animador/transição antes de decidir se vai confirmar a transação concluindo o gesto ou cancelando.
Sistema de transição | Recurso XML | Suporte à 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 uma versão anterior |
R.transition |
Não |
AndroidX Transition com Transition 1.5.0 |
R.transition |
Sim |
Se você encontrar problemas no suporte à volta preditiva em fragmentos depois de ativar o gesto de volta preditivo, registre um problema no Fragment com um exemplo de projeto que reproduza seu problema. É possível desativar a volta preditiva usando FragmentManager.enabledPredictiveBack(false)
na onCreate()
da sua atividade.
FragmentManager.OnBackStackChangedListener()
agora fornece onBackStackChangeProgressed()
e onBackStackChangeCancelled()
para receber o progresso de volta preditivo e eventos cancelados, respectivamente.
Fragment Compose Artifact
Um novo artefato fragment-compose
foi criado com foco no suporte a apps que estão no processo de migração de uma arquitetura baseada em fragmentos para uma arquitetura totalmente baseada no Compose.
O primeiro recurso disponível neste novo artefato é um método de extensão content
em Fragment
que busca facilitar o uso do Compose para a interface de um fragmento 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
- Foram adicionados registros para indicar por que a configuração de um
sharedElement
sem nenhuma outra transição não será executada. (Iec48e). - Correção de um bug em que, se um elemento compartilhado não pesquisável era adicionado a uma transação em que todas as outras transições eram buscáveis, havia uma falha. Agora, a transação será considerada corretamente 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 Instalador de perfil 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
- O
FragmentHostCallback
agora é 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
- Correção de um problema em que, ao confirmar um gesto de volta preditiva 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).
- Correção de um problema em fragmentos em que interromper transições de entrada com um gesto de volta preditiva 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
Animator
ou a transição do AndroidX, os fragmentos lançavam umNullPointerException
dehandleOnBackProgressed
se nenhumFragmentManager.OnBackStackChangedListener
fosse adicionado poraddOnBackStackChangedListener
. (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 fragmento do Compose
Um novo artefato fragment-compose
foi criado com foco no suporte a apps que estão no processo de migração de uma arquitetura baseada em fragmentos para uma arquitetura totalmente baseada no Compose.
O primeiro recurso disponível neste novo artefato é um método de extensão content
em Fragment
que facilita o uso do Compose para a interface de um fragmento 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
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
Animator
ou para a transição do AndroidX, os fragmentos vão gerar umaNullPointerException
dehandleOnBackProgressed
se nenhumaFragmentManager.OnBackStackChangedListener
tiver sido adicionada poraddOnBackStackChangedListener
. Adicionar um listener manualmente vai resolver o problema. Uma correção vai estar disponível para isso 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.
Limpeza
- A solução alternativa para a biblioteca de transição foi removida e corrigida em Transition
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
- Correção de uma
NullPointerException
causada pela configuração de uma transição de elemento compartilhado e também pela falha na definição de uma entrada/exitTransition. (I8472b). - Do Fragment
1.6.2
: quando o fragmento de umFragmentContainerView
é inflado, os estados dele, comoFragmentManager
, host e ID, agora são acessíveis no callbackonInflate
. (I1e44c, b/307427423). - Do Fragment
1.6.2
: ao usarclearBackStack
para remover um conjunto de fragmentos, qualquerViewModel
de fragmento aninhado será limpo quando oViewModels
do fragmento pai for limpo. (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
animateToStart
adicionada na Transition1.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 transições do AndroidX. Isso permite que você use o gesto de voltar para procurar o fragmento anterior com sua transição personalizada do AndroidX antes de decidir se vai confirmar ou cancelar a transação com o gesto concluído. É necessário depender da versão Transição
1.5.0-alpha03
para ativar esse recurso. (Ib49b4, b/285175724).
Problemas conhecidos
- Atualmente, há um problema em que, depois de cancelar um gesto de volta com uma transição, a próxima vez que você iniciar o gesto de volta, ele não vai executar a transição, causando uma tela em branco. Isso pode ser causado por um problema na biblioteca Transition. (b/300157785). Se você encontrar esse problema, envie um problema para o Fragment com um projeto de exemplo que reproduza o problema. Você pode desativar a volta preditiva usando
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
- Correção de um problema ao cancelar um gesto de volta preditiva 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 a tentativa de voltar duas vezes em sucessão rápida no penúltimo fragmento na backstack 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 fragmentos ao usar a volta preditiva que fazia com que o primeiro fragmento na backstack do gerenciador de fragmentos fosse ignorado e a atividade fosse encerrada ao usar a volta do sistema pela navegação de três botões ou o 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 preditivos 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 agora vão aguardar até que o gesto seja concluído antes de executar a ação de volta. (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 que você use o gesto "Voltar" para conferir o fragmento anterior com seu animador personalizado antes de decidir se vai confirmar a transação com o gesto concluído ou cancelá-la. 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 fragmento de um
FragmentContainerView
é inflado, os estados dele, comoFragmentManager
, host e ID, agora são acessíveis no callbackonInflate
. (I1e44c, b/307427423). - Ao usar
clearBackStack
para remover um conjunto de fragmentos, oViewModel
de qualquer fragmento aninhado será apagado quando osViewModels
do fragmento pai forem apagados (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
- Correção de 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 de fragmento fosse movida de volta para o estado
RESUMED
Isso faria com que o estado armazenado em cache fosse reutilizado se essa instância de fragmento estivesse na backstack durante o uso da API de várias backstacks 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
ComponentDialog
sem 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
Fragment
s foi totalmente dividido entre o estado da biblioteca particular (classesParcelable
personalizadas) e o estado fornecido pelo desenvolvedor, que agora é sempre armazenado em umBundle
que permite determinar exatamente a origem do estado de um fragmento - A interface
FragmentManager.OnBackStackChangedListener
foi expandida com dois callbacks adicionais deonBackStackChangeStarted
eonBackStackChangeCommitted
que são chamados com cadaFragment
logo antes de serem adicionados/removidos da backstack de fragmentos e logo após a transação ser confirmada, respectivamente. FragmentStrictMode
adicionou uma novaWrongNestedHierarchyViolation
que detecta quando um fragmento filho está aninhado dentro da hierarquia de visualização do elemento pai, mas não foi adicionado aochildFragmentManager
do pai- As APIs
Fragment
eFragmentManager
que usam umaIntent
ou umaIntentSender
agora recebem a anotação@NonNull
corretamente 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
DialogFragment
agora oferece acesso aoComponentDialog
subjacente pela APIrequireComponentDialog()
. - O fragmento agora depende do Lifecycle
2.6.1
. - O fragmento agora depende de SavedState
1.2.1
. - O fragmento agora depende do ProfileInstaller
1.3.0
. O artefato
fragment-testing-manifest
separa 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
eandroidx.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
ActivityResult
s fossem enviados com o código de solicitação incorreto quando várias solicitaçõesstartActivityForResult
eram feitas consecutivamente (If0b9d, b/249519359). - Foi corrigido um problema em que os callbacks
onBackStackChangeListener
eram enviados para transações que não alteravam a backstack se fossem misturados com transações que fazem isso (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
postponeEnterTransition
com um tempo limite e substituir o fragmento adiado não resulta mais em vazamento do fragmento adiado. (I2ec7d, b/276375110). - Os novos callbacks
onBackStackChangeStarted
eonBackStackChangeCommitted
agora só enviam 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
DialogFragment
agora oferece acesso aoComponentDialog
subjacente pela APIrequireComponentDialog()
. (I022e3, b/234274777). - As APIs de fragmento
commitNow()
,executePendingTransactions()
epopBackStackImmediate()
foram anotadas com@MainThread
, o que significa que agora elas vão gerar erros de build quando não forem chamadas pela linha de execução principal, em vez de esperar uma falha no tempo de execução. (Ic9665, b/236538905).
Correções de bugs
- Correção de um bug em
FragmentManager
em que salvar e restaurar no mesmo frame podia causar uma falha (Ib36af, b/246519668). - Os callbacks
OnBackStackChangedListener
onBackStackChangeStarted
eonBackStackChangeCommitted
agora são executados apenas quando a backstackFragmentManager
é 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 do callback
OnBackStackChangedListener.onBackStackChangeCommited
foi ajustado para ser executado antes das operações de fragmento. Isso garante que o callback nunca seja transmitido para um fragmento que foi desconectado. (I66a76, b/273568280).
Correções de bugs
- Do Fragment
1.5.6
: foi corrigido um problema em que chamarclearFragmentResultListener
dentro de umsetFragmentResultListener
não funcionava se oLifecycle
já estivesseSTARTED
e um resultado já estivesse disponível (If7458).
Atualizações de dependência
- O fragmento agora depende do Lifecycle
2.6.1
. (586fe7). - O fragmento agora depende do SavedState
1.2.1
. (078e4e). - O fragmento 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
: foi corrigido um problema em que a remoção de qualquer fragmento, mesmo que tivesse adicionado itens de menu ou não, 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
onBackStackChangedStarted
noonBackStackChangedListener
deFragmentManager
agora será executado antes que os fragmentos comecem a se mover 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.OnBackStackChagnedListener
agora oferece dois callbacks extras, oonBackStackChangeStarted
e 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
Fragment
eFragmentManager
que usam umaIntent
ou umaIntentSender
agora recebem a anotação@NonNull
corretamente 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
FragmentStrictMode
adicionou uma novaWrongNestedHierarchyViolation
que detecta quando um fragmento filho está aninhado dentro da hierarquia de visualização do elemento pai, mas não foi adicionado aochildFragmentManager
do pai (I72521, b/249299268).
Mudanças de comportamento
- Agora, os fragmentos restauram o estado
SavedStateRegistry
antes 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-manifest
separa 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 estadoViewModel
como 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
DialogFragment
agora 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
/Animator
errados (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
Fragment
s foi totalmente dividido entre o estado da biblioteca particular (classesParcelable
personalizadas) e o estado fornecido pelo desenvolvedor, que agora é sempre armazenado em umBundle
que 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 noDialogFragmentCallbacksDetector
em 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
- O uso de
postponeEnterTransition
com um tempo limite e a substituição do fragmento adiado não resulta mais em vazamento do fragmento adiado (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
- Correção de um problema em que a remoção de qualquer fragmento, tivesse itens de menu adicionados ou não, invalidava o menu da atividade. (50f098, b/244336571).
- Correção de um problema em que chamar
clearFragmentResultListener
dentro de umasetFragmentResultListener
não funcionaria se oLifecycle
já fosseSTARTED
e 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
ViewModel
como 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
FragmentController
personalizado 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
/Animator
errados (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
DialogFragmentCallbacksDetector
em 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
Fragment
agora pode fornecer uma interfaceViewModelProvider.Factory
sem estado usando a classeCreationExtras
do Lifecycle2.5.0
. - Integração da caixa de diálogo do componente:
DialogFragment
agora usaComponentDialog
usando a Activity1.5.0
como 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
FragmentManager
agora armazena o estado de instância salvo em umBundle
em vez de diretamente em umParcelable
personalizado. - Os resultados definidos pelas
Fragment Result APIs
que 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
FragmentStrictMode
agora 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 à
ActionBar
da atividade foi descontinuado. As APIsMenuHost
eMenuProvider
adicionadas na Activity1.4.0
fornecem 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
DialogFragment
adicionou um novo métododismissNow
que usacommitNow
para oferecer paridade com a funçãoshowNow
. Isso não faz com que a classeDialog
seja dispensada imediatamente, apenas que ela atualize o estado daFragmentManager
de forma síncrona (I15c36, b/72644830).
Refatoração de estado da instância salva
- A classe
FragmentManager
agora armazena o estado de instância salvo em umBundle
em vez de diretamente em umParcelable
personalizado. 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()
doFragment
foi 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 à
ActionBar
da 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 APIsMenuHost
eMenuProvider
adicionadas na Activity1.4.0-alpha01
fornecem 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
SavedStateViewFactory
agora oferece suporte ao uso deCreationExtras
mesmo 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
CreationExtras
para as funçõesby viewModels()
eby activityViewModels()
(Ibefe7, b/217601110).
Mudanças de comportamento
DialogFragment
agora usaComponentDialog
como 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
FragmentStrictMode
agora 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
Fragment
agora 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
:FragmentContainerView
nã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 lambdaownerProducer
personalizada com a função lenta deby viewModels()
, ela usa adefaultViewModelProviderFactory
desse proprietário se umaViewModelProvider.Factory
personalizada não for fornecida, em vez de sempre usar a fábrica do fragmento (I56170, b/214106513). - Uma falha ao acessar um
ViewModel
pela primeira vez de um callbackregisterForActivityResult()
de umFragment
foi 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
FragmentContainerView
nã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
ownerProducer
personalizada com a função lenta deby viewModels()
, ela usa adefaultViewModelProviderFactory
desse proprietário se umaViewModelProvider.Factory
personalizada 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
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. AFragmentStrictMode.Policy
que controla quais verificações são ativadas e quais "penalidades" são acionadas pode ser definida em umFragmentManager
usando o novo métodosetStrictModePolicy()
. A política se aplica a esseFragmentManager
e, de forma transitória, aos gerenciadores de fragmentos filhos que não definem a própria política exclusiva Consulte StrictMode para fragmentos. A
FragmentContainerView
agora 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>().navController
O
FragmentScenario
agora implementa oCloseable
, permitindo o uso com o métodouse
do 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 deViewModel
associadas 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
FragmentManager
nã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
DialogFragment
agora 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
DetachAndAttachFragmentInSameFragmentTransaction
paraDetachAndAttachSameFragment
(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
DetachAndAttachFragmentInSameFragmentTransaction
foi adicionado para detectar chamadas dedetach()
eattach()
no mesmoFragment
na 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
FragmentAddMenuProvider
foi adicionado para corrigir os usos do ciclo de vida do fragmento para o ciclo de vida da visualização do fragmento ao usar a APIaddMenuProvider
doMenuHost
(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
,requestPermissions
eonRequestPermissionsResult
, agora oferecem mais detalhes (cce80f). - As mensagens de descontinuação do método
onActivityCreated()
noFragment
e noDialogFragment
agora 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
FragmentContainerView
foi reescrita em Kotlin garantindo que a funçãogetFragment
respeite 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
UseRequireInsteadOfGet
para lidar melhor com parênteses redundantes (I2d865). - Melhoria na verificação de lint
UseGetLayoutInflater
para 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
IllegalStateException
ao restaurar umaFragmentTransaction
ou como uma segunda cópia de um fragmento em exibição (I9039f). - Foi corrigido um problema em que o
FragmentManager
mantinha uma cópia do estado salvo anteriormente pelo métodosaveBackStack()
, mesmo depois dele ter sido restaurado (Ied212). - O método
dismissAllowingStateLoss()
doDialogFragment
nã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 comoGONE
ao usar o métodohide()
quando a visualização raiz definetransitionGroup=”true”
(aosp/1766655, b/193603427). - Da API Fragment
1.3.6
: aFragmentActivity
agora 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
FragmentManager
agora usaSavedStateRegistry
internamente para salvar o próprio estado. Os métodossaveAllState()
erestoreSavedState()
também foram descontinuados emFragmentController
. Se você estiver usando oFragmentController
para hospedar fragmentos fora daFragmentActivity
, implementeFragmentHostCallbacks
emSavedStateRegistryOwner
(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 umaFragmentTransaction
que usavareplace()
era executada (I73137). - Foi corrigida uma
NullPointerException
que 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
FragmentManager
restaurava 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
Violation
foram atualizadas com mensagens de erro mais detalhadas que explicam os detalhes da violação (b/187871638).FragmentTagUsageViolation
agora contém uma mensagem de erro mais detalhada com o contêiner pai ao qual o fragmento teria sido adicionado (Ic33a7).WrongFragmentContainerViolation
agora 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
TargetFragmentUsageViolation
agora 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
RetainInstanceUsageViolation
agora têm mensagens de erro mais detalhadas que incluem o fragmento que causa a violação (I6bd55). FragmentReuseViolation
agora tem uma mensagem de erro mais detalhada que inclui o código anterior do fragmento (I28ce2).SetUserVisibleHintViolation
agora 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
fitsSystemWindows
em umaFragmentContainerView
foi 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.4
por aosp/1679887. Os fragmentos agora processam corretamente os grupos de transição (definidos diretamente portransitionGroup="true"
ou indiretamente portransitionName
oubackground
), e os elementos compartilhados não geram maisIndexOutOfBoundsException
s (I16484, b/188679569, b/188969304). - O
FragmentManager
não falha mais quando você tenta ocultar um fragmento removido (I573dd, b/183634730). - A verificação de lint
OnCreateDialogIncorrectCallback
nã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
FragmentStrictMode
sempre registrará violações quando a geração de registros for ativada peloFragmentManager
, independentemente da política atual de modo restrito usada (I02df6, b/187872638). FragmentStrictMode
agora oferece suporte à isenção de classesFragment
específicas deViolation
s no modo restrito, possibilitando que essa classe ignore penalidades (Ib4e5d, b/184786736).A classe
Violation
deFragmentStrictMode
foi 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). CadaViolation
contém o seguinte:WrongFragmentContainerViolation
agora contém oViewGroup
a que oFragment
estava tentando ser adicionado (I83c75, b/187871150).TargetFragmentUsageViolation
foi ampliada emSetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
eGetTargetFragmentRequestCodeUsageViolation
, comSetTargetFragmentUsageViolation
contendo o fragmento de destino e o código de solicitação (I741b4, b/187871150).SetUserVisibleHintViolation
agora contém o valor booleano transmitido parasetUserVisibleHint()
(I00585, b/187871150).FragmentTagUsageViolation
agora contém o ViewGroup em que a tag<fragment>
estava tentando inflar um fragmento (I5dbbc, b/187871150).FragmentReuseViolation
agora contém o ID exclusivo da instância anterior doFragment
que causou a violação (I0544d, b/187871150).RetainInstanceUsageViolation
agora é abstrata e tem duas subclasses,SetRetainInstanceUsageViolation
eGetRetainInstanceUsageViolation
, representando os dois tipos de casos de violação (Ic81e5, b/187871150).
Mudanças de comportamento
FragmentContainerView
agora gera uma exceção ao tentar mudar o atributofitsSystemWindow
de 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
FragmentContainerView
agora 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>().navController
Foi adicionado o
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
para especificar se a animação padrão de transição de atividades do tema usado será ativada na transição de fragmentos (I46652).
Várias backstacks
O FragmentManager
mantém uma backstack composta de transações de fragmentos que usaram addToBackStack()
. Isso permite remover essas transações e retornar ao estado anterior usando os mecanismos para salvar o estado com fragmentos e fazer com que os fragmentos restaurem o estado corretamente.
Esta versão expande esses mecanismos fornecendo duas novas APIs do FragmentManager
: saveBackStack(String name)
e restoreBackStack(String name)
. Essas APIs usam o mesmo name
de addToBackStack()
para salvar o estado da FragmentTransaction
e o estado de cada fragmento adicionado a essas transações. Também permitem restaurar as transações e os fragmentos com o estado delas. Assim, é possível "alternar" de fato entre várias backstacks, salvando a atual e restaurando uma salva anteriormente.
O saveBackStack()
opera da mesma forma que popBackStack()
: ele é assíncrono e faz com que todas as transações de fragmento voltem a esse nome específico para serem revertidas. Também faz com que os fragmentos adicionados sejam destruídos e removidos. Mas esses comandos são diferentes em alguns pontos significativos:
- O
saveBackStack()
é sempre inclusivo. - Ao contrário de
popBackStack()
, que vai remover todas as transações na backstack se o nome especificado não for encontrado na backstack ou se um nome nulo for fornecido, osaveBackStack()
não vai fazer nada se você não confirmar antes uma transação de fragmento usandoaddToBackStack()
com exatamente esse nome não nulo. - O estado de todos os fragmentos adicionados dessas transações é salvo. Isso significa que o estado de visualização de cada fragmento é armazenado. O
onSaveInstanceState()
de cada fragmento é chamado e restaurado. Todas as instâncias deViewModel
associadas 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
FragmentManager
nã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 deFragment
removida antes está sendo adicionada novamente a umFragmentManager
. Nunca interaja com uma instância deFragment
nem 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 aFragmentContainerView
ao 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 aFragmentContainerView
como 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
FragmentScenario
agora implementa oCloseable
, permitindo o uso com o métodouse
do Kotlin ou com try-with-resources (#121, b/143774122).
Novas verificações de lint
- A verificação de lint
UseGetLayoutInflater
agora 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
DialogFragmentCallbacksDetector
agora avisa quando chama osetOnCancelListener
ou osetOnDismissListener
no 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.3
ao usar a APIViewTreeViewModelStoreOwner.get()
com oViewModelProvider
ou o métodoviewModel()
do Jetpack Compose dentro de um fragmento. Esses casos de uso agora vão usar corretamente aViewModelProvider.Factory
fornecida pelo fragmento se ela modificargetDefaultViewModelProviderFactory()
(como os fragmentos com anotações do@AndroidEntryPoint
fazem ao usar o Hilt). Se você não modificar esse método, umaSavedStateViewModelFactory
que 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
FragmentContainerView
na API 29, os encartes não vão mais ser enviados indefinidamente, corrigindo problemas com instâncias daBottomNavigationBar
e 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
transitionGroup
definido como falso, a transição vai ser feita corretamente (I99675).
Contribuição externa
- Agradecemos a simonschiller por fazer com que o
FragmentScenario
implemente oCloseable
(#121, b/143774122). - Agradecemos a simonschiller por adicionar a API
FragmentStrictMode
na í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
: oFragmentManager
nã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
GONE
ao usar o métodohide()
quando a visualização raiz definetransitionGroup=”true”
(aosp/1766655, b/193603427). - Agora,
FragmentActivity
sempre 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.4
por aosp/1679887. Os fragmentos agora processam corretamente os grupos de transição (definidos diretamente portransitionGroup="true"
ou indiretamente portransitionName
oubackground
), e os elementos compartilhados não geram maisIndexOutOfBoundsException
s (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.3
ao usar a APIViewTreeViewModelStoreOwner.get()
com oViewModelProvider
ou o métodoviewModel()
do Jetpack Compose dentro de um fragmento ao usar o Hilt. Esses casos de uso agora vão usar corretamente aViewModelProvider.Factory
fornecida pelo fragmento se ela modificargetDefaultViewModelProviderFactory()
(como os fragmentos com anotações do@AndroidEntryPoint
fazem). Se você não modificar esse método, umaSavedStateViewModelFactory
que 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
FragmentContainerView
na API 29, os encartes não serão mais enviados indefinidamente, corrigindo problemas com instâncias daBottomNavigationBar
e 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
transitionGroup
definido 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
SavedStateViewModelFactory
agora funciona quando usado com oSavedStateRegistryOwner
retornado 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çõespopEnter
não fossem executadas ao remover umFragmentTransaction
que incluísse uma operaçãosetPrimaryNavFragment
, como aquelas usadas porNavHostFragment
(I38c87, b/183877426). FragmentContainerView
agora garante que cadaFragment
receba um novo conjunto deWindowInsets
, garantindo que cada fragmento agora possa consumir os encartes de forma independente (I63f68, b/172153900).DialogFragment
agora 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 classeDialog
personalizada, 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
InvalidFragmentVersionForActivityResult
da 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
DialogFragment
agora podem ter acesso aos proprietários da ViewTree da DecorationView, garantindo queDialogFragment
possa ser usado comComposeView
(Ib9290, b/180691023).
Correções de bugs
- Fragmentos inflados em uma atividade já
RESUMED
que 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
setFragmentResult
esetFragmentResultListener
atualizaram 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
onCreateOptionsMenu
ao usar mostrar/ocultar transações (I8bce8, b/180255554). - Fragmentos filhos com transições que iniciam antes do fragmento ser posicionado agora são
RESUMED
corretamente (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
FragmentManager
corrigiu 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
ActivityResultRegistry
introduzida na Activity1.2.0
para 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 umaFragmentActivity
ouAppCompatActivity
.
- 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()
emFragmentActivity
eFragment
foi descontinuado. Um novoFragmentOnAttachListener
foi 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 classeFragmentScenario
do artefatofragment-testing
foi reescrita em Kotlin e recebeu várias melhorias:FragmentScenario
agora usasetMaxLifecycle()
para implementarmoveToState()
, garantindo um comportamento consistente em todos os níveis da API e desacoplando o estado do fragmento da atividade implícita.FragmentScenario
agora oferece suporte para a configuração de umLifecycle.State
inicial para possibilitar a declaração do estado do fragmento antes da mudança para cadaLifecycle.State
pela primeira vez.- Agora há uma alternativa para a API
FragmentScenario
deonFragment
na forma do método Kotlin de extensão reificadowithFragment
que permite retornar um valor. Em especial, ele repete as exceções geradas no bloco especificado.
Suporte a
ViewTree
:Fragment
agora oferece suporte às APIsViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
eViewTreeSavedStateRegistryOwner
adicionadas no Lifecycle2.3.0
e SavedState1.1.0
para retornar o Fragment como oViewModelStoreOwner
e umSavedStateRegistryOwner
eLifecycleOwner
ligados ao ciclo de vida de visualização do fragmento ao usar umaView
em umFragment
.Mudanças de animação de
TRANSIT_
: os efeitos padrão de fragmento,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
eTRANSIT_FRAGMENT_FADE
, agora usamAnimator
em 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 doViewModel
e o callbackonCleared()
recebido.Descontinuação do adaptador ViewPager 1: com o lançamento do ViewPager2
1.0.0
, o uso das classesFragmentPagerAdapter
eFragmentStatePagerAdapter
para interagir comViewPager
foi 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
DialogFragment
pai aparecia acima de umDialogFragment
filho 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
hide
com umAnimation
fazia 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
RESUMED
corretamente (I1fc1d, b/177154873).
Novas correções de bugs do gerenciador de estado
- A visualização
Lifecycle
do Fragment agora gerencia corretamente os casos em que a visualização do Fragment é destruída antes que oLifecycle
alcanceCREATED
(criado), evitando exceções que indiquem "nenhum evento abaixo de INITIALIZED" (eda2bd, b/176138645). - Os fragmentos que usam um
Animator
agora 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
Animation
a umaFragmentContainerView
e, 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
FragmentScenario
foi 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
class
ouandroid:name
agora podem ser usadas fora de umaFragmentActivity
(Id4397, b/172266337). - A tentativa de definir o ciclo de vida máximo de um fragmento como
DESTROYED
agora gerará umaIllegalArgumentException
(Ie7651, b/170765622). - A inicialização de um FragmentScenario com um estado
DESTROYED
agora 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
Animator
ou uma das opçõesTRANSIT_FRAGMENT_
(I92426, b/169874632). - Foi corrigido um problema que impedia que fragmentos com uma saída
Animation
fossem 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
Animator
de 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
FragmentFactory
agora 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 estadoLifecycle
paraINITIALIZING
, 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()
paraCREATED
agora 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
FragmentManager
não nulo, e fragmentos com umFragmentManager
não nulo sempre vão ser considerados ativos (aosp/1422346). - Os efeitos padrão de fragmento,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
eTRANSIT_FRAGMENT_FADE
, agora usamAnimator
em 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
INVISIBLE
antes da animação começar, ela vai permanecer invisível (b/164481490). - Agora, os fragmentos priorizam
Animators
em vez deAnimations
, o que significa que um fragmento com ambos vai executar apenas oAnimator
e 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
replace
agora é 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
Animation
substituiria todos os efeitos deTransition
ou em que umAnimator
e umaTransition
em um fragmento individual seriam executados (b/149569323). - A
enterTransition
e aexitTranstion
de 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 paraSTARTED
com outros fragmentos (b/129035555). - Foi corrigido um problema em que o
FragmentManager
executaria 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).
FragmentManager
agora 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
Transition
do framework eTransition
do AndroidX agora menciona o fragmento com a transição inválida (b/155574969).
Mudanças de comportamento
- Agora você pode chamar
launch()
em umActivityResultLauncher
no 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). FragmentActivity
agora usa a APIOnContextAvailableListener
introduzida na atividade1.2.0-alpha08
para restaurar o estado doFragmentManager
. Todos os listeners adicionados às subclasses daFragmentActivity
serão executados depois desse listener. (I513da)
Correções de bugs
ActivityOptions
aprovadas 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
FragmentScenario
agora 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
FragmentScenario
deonFragment
na forma do método de extensãowithFragment
reificado de Kotlin, que permite retornar um valor. Em especial, ele repete as exceções geradas no bloco especificado. (b/158697631).
Mudanças de comportamento
FragmentScenario
agora 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
SavedStateRegistryOwner
retornado porViewTreeSavedStateRegistryOwner
agora 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
clearFragmentResultListener
agora 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()
emFragmentActivity
eFragment
foi descontinuado. Um novoFragmentOnAttachListener
foi 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
DialogFragment
mostrava outroDialogFragment
como fragmento filho (b/157195715). - Foi corrigido um problema em que a verificação de lint
UseRequireInsteadOfGet
nã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
ViewTreeViewModelStoreOwner
do Lifecycle2.3.0-alpha03
e àViewTreeSavedStateRegistryOwner
do SavedState1.1.0-alpha01
ao usar umaView
em umaFragment
(aosp/1297993, aosp/1300264).
Mudanças na API
- As APIs
setFragmentResult()
esetFragmentResultListener()
agora usamBundle
eFragmentResultListener
nã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()
erequestPermissions
emFragment
, descontinuados anteriormente, agora usamActivityResultRegistry
internamente, 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 oFragmentFactory
padrã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
illegalStateException
ao adicionar um fragmento à hierarquia de visualização deDialogFragment
comFragmentContainerView
(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
prepareCall
emFragment
agora sãofinal
(b/152439361).
Correções de bugs
- Correção de uma regressão introduzida no Fragment
1.3.0-alpha02
ao usarBottomSheetDialogFragment
(b/151652127, aosp/1263328, aosp/1265163). - Correção de uma falha ao usar
prepareCall
de 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 lintFragmentLiveDataObserve
foi desativada em classesDialogFragment
porque o ciclo de vida e o ciclo de visualização delas sempre estão em sincronia, o que torna seguro usarthis
ouviewLifecycleOwner
ao 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
ActivityResultRegistry
introduzida na Activity1.2.0-alpha02
para 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,
DialogFragment
fornece um construtor que usa um@LayoutRes
para 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 umLifeCycleObserver
noLifecycle
da 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 noDialogFragment
que causava umStackOverflowError
ao 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 lintUseRequireInsteadOfGet
ao usar um nome de variável local que sombreava o nome da propriedade Kotlin (b/149891163). - Do Fragment
1.2.3
:FragmentContainerView
não gera mais umaUnsupportedOperationException
para usar o construtor incorreto na visualização do layout (b/149707833).
Problemas conhecidos
- O
BottomSheetDialogFragment
deixou 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-alpha01
para que ela retorne oviewLifecycleOwner
do fragmento comoLifecycleOwner
para 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 doViewModel
e o callbackonCleared()
recebido (b/143911815). - Com o lançamento de ViewPager2
1.0.0
, as classesFragmentPagerAdapter
eFragmentStatePagerAdapter
para interação comViewPager
foram 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
Fragment
de 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.2
nã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). FragmentContainerView
não gera mais umUnsupportedOperationException
ao 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
FragmentLiveDataObserve
foi desativada em classesDialogFragment
porque o ciclo de vida e o ciclo de visualização estão sempre em sincronia, o que torna seguro usarthis
ouviewLifecycleOwner
ao 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
DialogFragment
que causava umStackOverflowError
ao 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
UseRequireInsteadOfGet
ao usar um nome de variável local que ocultava o nome da propriedade Kotlin (b/149891163). FragmentContainerView
não gera mais umUnsupportedOperationException
para 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
viewLifecycleOwner
comoLifecycleOwner
para chamadas deOnBackPressedDispatcher
emonCreateView()
,onViewCreated()
eonActivityCreated()
(b/142117657). - Foi adicionada uma nova verificação de lint que confirma que você está usando a
debugImplementation
correta 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 umget
erequire
equivalente (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
viewLifecycleOwner
ao usarobserve
para gerenciar também a versão do método de extensãolivedata-ktx
deobserve
(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
add
ereplace
que tomam uma instânciaClass
(ou as versões reificadas de Kotlin) agora têm o construtor padrão mantido pelo ProGuard (b/148181315). FragmentStatePagerAdapter
eFragmentPagerAdapter
não detectam mais exceções geradas porFragmentManager
durante 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ânciaFragmentManager
não gera mais umaNullPointerException
quando a atividade já foi destruída (b/148189412).
Mudanças na dependência
- Fragmentos
1.2.1
agora 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 deFrameLayout
ou outros layouts. Ele também oferece suporte para os mesmosclass
,android:name
eandroid:tag
opcional que a tag<fragment>
, mas usa umFragmentTransaction
normal 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()
emFragmentTransaction
que levamClass<? extends Fragment>
eBundle
opcional de argumentos. Esses métodos usam suaFragmentFactory
para 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:
SavedStateViewModelFactory
agora é a fábrica padrão aplicada ao usarby viewModels()
,by activityViewModels()
, o construtorViewModelProvider
ouViewModelProviders.of()
com um fragmento. - Novas verificações de lint: nova verificação de lint que garante o uso de
getViewLifecycleOwner()
ao observarLiveData
deonCreateView()
,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 nuloFragmentManager
ao 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.enableDebugLogging
foi descontinuado. O FragmentManager agora respeitaLog.isLoggable()
para a tagFragmentManager
, permitindo que você ative o registroDEBUG
ouVERBOSE
sem recompilar seu app.
Problemas conhecidos
- Fragments referenciados somente pelo atributo
class
ouandroid:name
em umaFragmentContainerView
nã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
NavHostFragment
usandoclass
ouandroid:name
em 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-rc04
ao 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_CLOSE
eTRANSIT_FRAGMENT_FADE
para 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 deFragmentFactory
també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-rc03
e 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 observarLiveData
deonCreateView()
,onViewCreated()
ouonActivityCreated()
(introduzido no Fragment1.2.0-rc01
) agora usa a sintaxe de acesso à propriedade KotlinviewLifecycleOwner
em 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
FragmentContainerView
agora 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 oLiveData
deonCreateView()
,onViewCreated()
ouonActivityCreated()
(b/137122478).
Correções de bugs
- Os callbacks
onDismiss
eonCancel
emDialogFragment
agora garantem que aDialogInterface
transmitida a eles seja de valor não nulo e quegetDialog()
retorne valores não nulos quando executado (b/141974033). FragmentContainerView
agora adiciona o fragmento definido porclass
ouandroid:name
como parte da inflação, garantindo quefindFragmentById()
efindFragmentByTag()
funcionem imediatamente depois (b/142520327).- Foi corrigida uma
IllegalStateException
emFragmentContainerView
quando o estado estava sendo salvo (b/142580713). - Foi corrigida uma
UnsupportedOperationException
emFragmentContainerView
quando a classeFragmentContainerView
é ofuscada (b/142657034).
Problemas conhecidos
- Fragments referenciados somente pelo atributo
class
ouandroid:name
em umaFragmentContainerView
nã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 paraFragmentContainerView
até 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
FragmentContainerView
inclui suporte à adição de um fragmento inicial que aceite os atributos XMLandroid:name
e, opcionalmente,android:tag
. Ao contrário da tag<fragment>
, aFragmentContainerView
usa umaFragmentTransaction
normal internamente para adicionar o fragmento inicial, permitindo mais operações deFragmentTransaction
emFragmentContainerView
, 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
ClassCastException
ao usarandroidx.transition
foi 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-alpha03
e 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.transition
corretamente 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.transition
na visualização raiz do fragmento ao usarFragmentContainerView
(b/140361893). - O artefato
fragment-testing
agora depende do AndroidX Test1.2.0
para corrigir uma incompatibilidade com o Espresso 3.2.0 mais recente (b/139100149). - O uso de
Log.w
no 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()
emFragment
foram descontinuados e substituídos por um únicogetParentFragmentManager()
, que retorna o valor não nuloFragmentManager
ao qual o fragmento é adicionado. Você pode usarisAdded()
para determinar se a chamada é segura (b/140574496). - O uso do método estático
FragmentManager.enableDebugLogging
foi descontinuado. FragmentManager agora respeitaLog.isLoggable()
para a tagFragmentManager
, permitindo que você ative o registroDEBUG
ouVERBOSE
sem 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
FragmentContainerView
agora éfinal
(b/140133091).
Correções de bugs
FragmentContainerView
agora 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
SavedStateViewModelFactory
agora é a fábrica padrão empregada ao usarby viewModels()
,by activityViewModels()
, o construtorViewModelProvider
ouViewModelProviders.of()
com umFragment
(b/135716331).- As animações padrão ao usar
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
,TRANSIT_FRAGMENT_FADE
comsetTransition
em umaFragmentTransaction
foram atualizadas para corresponder às animações usadas pelas atividades nos dispositivos Android 10 (aosp/1012812, aosp/1014730).
Mudanças na API
- Introdução de
FragmentContainerView
como o contêiner altamente recomendado para fragmentos adicionados dinamicamente, substituindo o uso deFrameLayout
etc. 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>
eBundle
argumentos opcionais. Esses métodos usam suaFragmentFactory
para 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
@MainThread
aos callbacks de ciclo de vida deFragment
(b/127272564). - O uso das APIs relacionadas ao título da navegação estrutural em
FragmentTransaction
eFragmentManager.BackStackEntry
foi descontinuado (b/138252944). - O uso do método
setTransitionStyle
emFragmentTransaction
foi descontinuado (aosp/1011537). - Vários dos métodos em
FragmentManager
não são maisabstract
. O próprioFragmentManager
permaneceabstract
e 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 emFragmentPagerAdapter
eFragmentStatePagerAdapter
ao 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
NullPointerException
ao 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
IllegalStateException
s ao usarFragmentPagerAdapter
eFragmentStatePagerAdapter
em 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
NullPointerException
ao remover umaFragmentTransaction
que 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-testing
fornece uma classeFragmentScenario
para testar um fragmento isoladamente. Consulte Testar a documentação dos fragmentos do seu app para saber mais detalhes. - FragmentFactory: agora, é possível definir uma
FragmentFactory
em umFragmentManager
para 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-ktx
agora 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.FragmentPagerAdapter
eFragmentStatePagerAdapter
têm um novo construtor que permite alternar para o novo comportamento. - Construtor AppCompatActivity LayoutId: subclasses de
FragmentActivity
agora podem optar por chamar um construtor emFragmentActivity
que 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
Fragment
agora podem optar por chamar um construtor emFragment
que 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
FragmentPagerAdapter
eFragmentStatePagerAdapter
ao 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
NullPointerException
ao remover umaFragmentTransaction
que 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
,STOPPED
eDESTROYED
) para fragmentos aninhados é feito corretamente (b/133497591). - As instâncias de
OnBackPressedCallback
registradas 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
instantiate
deFragmentFactory
, anteriormente descontinuado e que usava umBundle
, foi removido (aosp/953856). - Alteração interruptiva: as constantes
RESUME_ONLY_CURRENT_FRAGMENT
eUSE_SET_USER_VISIBLE_HINT
emFragmentPagerAdapter
eFragmentStatePagerAdapter
foram renomeadas paraBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
eBEHAVIOR_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.FragmentPagerAdapter
eFragmentStatePagerAdapter
têm um novo construtor que permite alternar para o novo comportamento. (b/129780800).
Mudanças na API
moveToState(STARTED)
emFragmentScenario
agora 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 construtorcontentLayoutId
deFragmentActivity
ouAppCompatActivity
(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
restoreSaveState
causada 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
OnBackPressedCallback
adicionado com um ciclo de vida do fragmento não era chamado se oFragmentManager
tivesse uma backstack. Consulte androidx.activity 1.0.0-alpha07 para mais detalhes. (aosp/948209). - Os fragmentos não aplicam mais
LAYER_TYPE_HARDWARE
para 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
Fragment
eFragmentActivity
agora 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
instantiate
de FragmentFactory que usa um argumento Bundle foi descontinuado, e os apps precisam usar a nova sobrecargainstantiate
que não usa um Bundle (b/128836103). - Os métodos
FragmentScenario
agora estão devidamente anotados com@StyleRes
(aosp/924193). - O uso de
FragmentTabHost
foi 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
@ContentView
na 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
@ContentView
agora 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
onNewIntent
paraFragmentActivity
agora é corretamente marcado com@CallSuper
(b/124120586).- Foi corrigido um problema em que o
onDismiss()
doDialogFragment
podia 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-testing
depende doandroidx.test:core-ktx
1.1.0 estável (b/121209673). - Agora, você pode usar
openActionBarOverflowOrOptionsMenu
comFragmentScenario
para 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 Bundle
ou 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
null
parasetTargetFragment()
(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
BundleSavedStateRegistryOwner
e depende da biblioteca SavedState recém-lançada (aosp/824380). - Um delegado da propriedade
by activityViewModels
Kotlin foi adicionado para recuperar os ViewModels associados à Activity contida (b/119050253). - O delegado da propriedade
by viewModels
Kotlin foi expandido para usar um método lambda opcional para extrair oViewModelStoreOwner
, permitindo transmitir o fragmento pai ou outroViewModelStoreOwner
personalizado com um código comoval viewModel: MyViewModel by viewModels(::requireParentFragment)
(b/119050253).
Mudanças na API
FragmentScenario
agora permite especificar um tema, comoTheme.AppCompat
(b/119054431). Essa é uma alteração interruptiva.- Adição de um método
requireView()
que retorna um@NonNull View
ou gera umaIllegalStateException
(b/120241368). - Foi adicionado um método
requireParentFragment()
que retorna um@NonNull Fragment
ou 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
Bundle
não nulo (b/119794496). - Os fragmentos removidos não reutilizam mais o objeto
Lifecycle
se 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
FragmentFactory
em qualquerFragmentManager
para 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-testing
depende deandroidx.test:core:1.0.0-beta01
, em vez doandroidx.test:core:1.0.0
correto.