Fragment
Atualização mais recente | Versão estável atual | Próximo candidato a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
27 de janeiro de 2021 | 1.2.5 | 1.3.0-rc02 | - | - |
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 no arquivo build.gradle
para
seu app ou módulo:
dependencies { def fragment_version = "1.2.5" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Para ver mais informações sobre dependências, consulte Adicionar dependências de compilação.
Feedback
Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas existentes (link em inglês) nesta biblioteca antes de criar um novo. Adicione seu voto a um problema existente clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.3.0
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
- Correção de 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 exibidos acima de um fragmento da caixa de diálogo pai (I30806, b/177439520). - Correção do 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 aLifecycle
alcanceCREATED
, 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
- Correção do 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 destaque (I952d8). - Correção de 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 destaque e de substituição na mesma transação de fragmento agora exibirá 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 a compatibilidade binária de origem pelo 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
- Correção de 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 tiveram 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, link em inglês; 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 é compatível com a 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 privados (aosp/1425237).
Correções de bugs
- Agora, os fragmentos inflados que usam a tag
<fragment>
aguardarão da forma correta até que as visualizações sejam adicionadas a um contêiner antes de serem movidos para STARTED (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 terão um
FragmentManager
não nulo, e fragmentos com umFragmentManager
não nulo sempre serão 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 permanecerá invisível (b/164481490). - Agora, os fragmentos priorizam
Animators
em vez deAnimations
, o que significa que um fragmento com ambos executará apenas oAnimator
e 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 essas 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
modificaria todos os efeitos deTransition
, ou 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). - Correção de um problema em que o
FragmentManager
executaria operações fora de ordem ao misturar uma transação reordenada adiada e uma transação não reordenada (b/147297731). - Abrir vários fragmentos simultaneamente não fará mais com que os fragmentos intermediários fiquem temporariamente visíveis ao adiá-los (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 falhar silenciosamente em 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 essas confirmações.
Novos recursos
FragmentScenario
agora é compatível com a configuração de um estado inicial do Lifecycle deCREATED
,STARTED
ouRESUMED
, em vez de sempre mover o fragmento para o estadoRESUMED
(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 desacopla 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 essas confirmações (link em inglês).
Novos recursos
- O callback
onAttachFragment()
emFragmentActivity
eFragment
foi suspenso. Um novoFragmentOnAttachListener
foi adicionado para oferecer uma alternativa mais flexível, permitindo a delegação deonAttachFragment()
para listeners testáveis separados e compatibilidade com o 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). - Correção de 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 essas confirmações (link em inglês).
Novos recursos
- Inclusão de compatibilidade com
ViewTreeViewModelStoreOwner
do ciclo de vida2.3.0-alpha03
eViewTreeSavedStateRegistryOwner
do SavedState1.1.0-alpha01
ao usar umView
em umFragment
(aosp/1297993, aosp/1300264, links em inglês)
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
, anteriormente obsoletos, 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 essas confirmações.
Novos recursos
- Inclusão de compatibilidade para transmitir resultados entre dois Fragments usando novas APIs em
FragmentManager
. Isso funciona para fragmentos de hierarquia (pai/filho), DialogFragments e fragmentos no Navigation e garante que os resultados sejam enviados para seu Fragment apenas enquanto ele for pelo menosSTARTED
(b/149787344).
Mudanças na API
- O uso das APIs de fragmento de destino foi suspenso. 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()
no Fragment foi suspenso. Use as APIs Activity Result (aosp/1290887). - Alteração interruptiva de Atividade
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). - Correção de 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 essas confirmações (link em inglês).
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). - Correção de 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 essas confirmações (link em inglês).
Novos recursos
- Inclusão de compatibilidade com a 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()
está suspenso. 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 removê-lo assim que o callbackonCreate()
for recebido. (b/144309266).
Correções de bugs
- Do Fragment
1.2.3
: correção de 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
: correção de 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 essas confirmações (link em inglês).
Novos recursos
- Inclusão de compatibilidade com a API
ViewTreeLifecycleOwner.get(View)
adicionada no Lifecycle2.3.0-alpha01
para que ela retorne oviewLifecycleOwner
do fragmento comoLifecycleOwner
para qualquer View retornada poronCreateView()
(aosp/1182955).
Mudanças na API
- O uso do método
setRetainInstance()
em fragmentos está suspenso. 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
ficaram obsoletas. 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).- Correção de um problema em que fragmentos retidos adicionados após o estado ser salvo não eram recriados continuamente e depois destruídos após 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 essas confirmações (link em inglês).
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 essas confirmações (link em inglês).
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 essas confirmações (link em inglês).
Correções de bugs
- Correção de um bug em
DialogFragment
que causava umStackOverflowError
ao chamargetLayoutInflater()
deonCreateDialog()
(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).
- Correção de falsos positivos na verificação de lint
UseRequireInsteadOfGet
ao usar um nome de variável local que sombreava 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 essas confirmações (link em inglês).
Novas verificações de lint
- O lint sugere o uso do
viewLifecycleOwner
comoLifecycleOwner
para chamadas paraOnBackPressedDispatcher
emonCreateView()
,onViewCreated()
eonActivityCreated()
(b/142117657). - Inclusão de 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
- Correção dos arquivos do Fragment ProGuard para evitar avisos de R8 (b/148963981).
- Melhoria na verificação de lint existente 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 essas confirmações (link em inglês).
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).- Correção de 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 Activity já está 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 essas confirmações (link em inglês).
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 é compatível com 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>
. onDestroyView()
timing: agora os fragmentos aguardam as 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
) serem concluídas antes de chamaronDestroyView()
.add()
ereplace()
baseado em classe: adição de novas sobrecargas deadd()
ereplace()
emFragmentTransaction
que levamClass<? extends Fragment>
eBundle
opcional de argumentos. Esses métodos usam seuFragmentFactory
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 usar oby viewModels()
,by activityViewModels()
, o construtorViewModelProvider
ouViewModelProviders.of()
com um Fragment. - Novas verificações de lint: nova verificação de lint que garante o uso de
getViewLifecycleOwner()
ao observarLiveData
deonCreateView()
,onViewCreated()
ouonActivityCreated()
. getFragmentManager()
marcado como obsoleto: o uso dos métodosgetFragmentManager()
erequireFragmentManager()
no Fragment está suspenso e foi substituído por um único métodogetParentFragmentManager()
, que retorna o valor não nuloFragmentManager
ao qual o Fragment é adicionado. Você pode usarisAdded()
para determinar se é seguro fazer a chamada.FragmentManager.enableDebugLogging()
marcado como obsoleto: o uso do método estáticoFragmentManager.enableDebugLogging
está suspenso. 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 umFragmentContainerView
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 essas confirmações (link em inglês).
Correções de bugs
- Correção de 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 Fragments agora são movidos corretamente paraCREATED
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 essas confirmações (link em inglês).
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 essas confirmações (link em inglês).
Correções de bugs
- Corrigida uma mudança de comportamento não intencional em que Fragments que foram removidos ainda são retornados por
findFragmentById()
/findFragmentByTag()
enquanto as animações/transições de saída deles são 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). - Correção de um problema em que as Views eram incorretamente marcadas como
INVISIBLE
depois de exibirem um Fragment 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 suspensão de uso relacionada a
setUserVisibleHint()
(b/143897055). - Documentação aprimorada sobre
setFragmentFactory()
egetFragmentFactory()
para indicar melhor que a configuração deFragmentFactory
também 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 essas confirmações (link em inglês).
Correções de bugs
- No Kotlin, o LintFix para uso de
getViewLifecycleOwner()
ao observarLiveData
deonCreateView()
,onViewCreated()
ouonActivityCreated()
(introduzido em 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 essas confirmações (link em inglês).
Novos recursos
FragmentContainerView
agora é compatível com o atributoclass
, além deandroid:name
, espelhando a funcionalidade da tag<fragment>
(b/142722242).- Adicionada uma nova verificação do Lint que garante que você está usando
getViewLifecycleOwner()
ao observarLiveData
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 Fragment definido porclass
ouandroid:name
como parte da inflação, garantindo quefindFragmentById()
efindFragmentByTag()
funcionem imediatamente depois (b/142520327).- Corrigida uma
IllegalStateException
emFragmentContainerView
devido ao estado sendo salvo (b/142580713). - Corrigida uma
UnsupportedOperationException
emFragmentContainerView
quando a classeFragmentContainerView
é ofuscada (b/142657034).
Problemas conhecidos
- Fragments referenciados somente pelo atributo
class
ouandroid:name
em umFragmentContainerView
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 essas confirmações (link em inglês).
Correções de bugs
- 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 essas confirmações (link em inglês).
Novos recursos
FragmentContainerView
inclui compatibilidade com adição de um fragmento inicial com compatibilidade com 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
- Corrigida uma
ClassCastException
ao usarandroidx.transition
(b/140680619). - Agora, ao usar Transition
1.3.0-beta01
, os Fragments aguardam as transições deandroidx.transition
, além das animações e transições de framework, que foram corrigidas em Fragment1.2.0-alpha03
e Fragment1.2.0-alpha02
, respectivamente, para concluir antes de enviaronDestroyView()
(aosp/1119841). - Ao usar a Transition
1.3.0-beta01
, os Fragments agora cancelam as transiçõesandroidx.transition
corretamente antes de iniciar novas transições/animações no mesmo contêiner (aosp/1119841). - Corrigido um problema na API 17 e versões anteriores ao usar transições
androidx.transition
na visualização raiz do seu Fragment 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). - Remoção do uso de
Log.w
no FragmentManager (aosp/1126468).
Problemas conhecidos
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 essas confirmações (link em inglês).
Mudanças na API
- O uso dos métodos
getFragmentManager()
erequireFragmentManager()
emFragment
foi suspenso e substituído por um únicogetParentFragmentManager()
, que retorna o valor não nuloFragmentManager
a que o Fragment é adicionado. Você pode usarisAdded()
para determinar se é a chamada é segura (b/140574496). - O uso do método
FragmentManager.enableDebugLogging
estático foi suspenso. 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 Fragments são destruídos corretamente enquanto as animações de saída em outros fragmentos estão em execução (b/140574199).
- Corrigido um problema em que Fragments chamava
Activity.findViewById()
em locais que antes não chamava (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 aqui (link em inglês).
Mudanças na API
FragmentContainerView
agora éfinal
(b/140133091).
Correções de bugs
FragmentContainerView
agora inverte a ordem do desenho corretamente ao destacar fragmentos da pilha de retorno (b/139104187).- Corrigido um problema em que a animação errada era executada ao destacar um fragmento e ao adicionar ao fragmento ao mesmo tempo (b/111659726).
- Agora, os Fragments 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 aqui (link em inglês).
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 Fragments 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 Fragments (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 seuFragmentFactory
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). - Adicionadas anotações
@MainThread
aos callbacks de ciclo de vida deFragment
(b/127272564). - Suspensão do uso das APIs relacionadas ao título da localização atual em
FragmentTransaction
e .FragmentManager.BackStackEntry
(b/138252944). - O uso do método
setTransitionStyle
emFragmentTransaction
foi suspenso (aosp/1011537). - Muitos dos métodos em
FragmentManager
não são maisabstract
. O próprioFragmentManager
permaneceabstract
e não pode ser diretamente instanciado ou estendido. Você continuará a receber apenas uma instância existente degetSupportFragmentManager()
,getChildFragmentManager()
etc.
Correções de bugs
- De Fragment
1.1.0-rc04
: agora, as transições adiadas nos Fragments exibidos são corretamente canceladas (b/138251858). - De 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). - De Fragment
1.1.0-rc02
: 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 Fragment de fragmentos filhos e descendentes são tratadas corretamente ao animar o Fragment pai (b/116675313).
- Corrigida uma
NullPointerException
ao usar transições de elementos compartilhados e combinar operações de exibiçã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 aqui (link em inglês).
Novos recursos
- Agora, FragmentManager chama
requestApplyInsets()
depois de anexar a visualização do Fragment e logo antes de chamaronViewCreated()
, garantindo que sua visualização tenha sempre as inserções corretas (b/135945162).
Correções de bugs
- Corrigida uma
NullPointerException
ao exibir 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 aqui (link em inglês).
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 fragment, 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 fragment 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 umFragmentTransaction
. Isso substitui asetUserVisibleHint()
obsoleta.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 fragment, em ver 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 aqui (link em inglês).
Correções de bugs
- Agora, as transições adiadas nos Fragments exibidos 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 aqui (link em inglês).
Correções de bugs
- 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 aqui.
Correções de bugs
- 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 aqui.
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). - Corrigida uma
NullPointerException
ao exibir 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 aqui.
Correções de bugs
- Agora, os callbacks de
androidx.lifecycle.Lifecycle
(relacionados especificamente comSTARTED
,RESUMED
,PAUSED
,STOPPED
eDESTROYED
) para Fragments aninhados são aninhados 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 aqui (link em inglês).
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 Fragment filho agora são removidos corretamente quando o Fragment 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 aqui (link em inglês).
Essa versão é incompatível com Preferences 1.1.0-alpha01 a 1.1.0-alpha04. Atualize para Preferences 1.1.0-alpha05 ao usar essa versão de Fragments.
Novos recursos
- Adicionada uma nova sobrecarga de
postponeEnterTransition()
que usa um tempo limite, depois do qual o Fragment chama automaticamentestartPostponedEnterTransition()
(b/120803208).
Mudanças na API
- Alteração importante: o método
FragmentFactory
instantiate
, anteriormente obsoleto, que utilizava umBundle
, foi removido (aosp/953856). - Alteração importante: 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 será 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 aqui (link em inglês).
Novos recursos
- Agora você pode definir um estado máximo de Lifecycle para um Fragment chamando
setMaxLifecycle()
em umaFragmentTransaction
. Isso substitui asetUserVisibleHint()
obsoleta.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 API de nível 24 ou mais recente (b/129880016).
Mudanças de comportamento
- Como consequência de (b/129907905)., os fragmentos na pilha de retorno não receberão um callback para
onCreateView()
quando a atividade de hospedagem for recriada. Agora,onCreateView()
só será chamado quando o fragmento se tornar visível (ou seja, quando a pilha de retorno for exibida).
Correções de bugs
- Corrigido um problema ao usar uma tag
<fragment>
em XML e o construtorcontentLayoutId
deFragmentActivity
ouAppCompatActivity
(b/129907905). - Corrigido um problema em que os fragmentos na pilha de retorno não eram movidos para pelo menos
CREATED
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). - Corrigida uma falha em
restoreSaveState
causada por uma dessincronização dos fragmentos retidos depois de o estado da instância ser salvo (b/130433793, aosp/947824). - Corrigidos problemas em que um
OnBackPressedCallback
adicionado com um ciclo de vida do fragment não era chamado se oFragmentManager
tivesse uma pilha de retorno. Consulte androidx.activity 1.0.0-alpha07 para ver mais detalhes. (aosp/948209). - Fragments não aplicam mais
LAYER_TYPE_HARDWARE
para animações. Se você precisar especificamente de uma animação da camada de hardware, defina-a 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 aqui (link em inglês).
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 se tornou obsoleto, 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
está suspenso (b/127971835). getThemedContext()
do FragmentActivity foi removido (aosp/934078).
Correções de bugs
- Corrigida uma regressão em 1.1.0-alpha05 que fazia com que o Fragment 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).
- Corrigido um problema ao usar construtores
@ContentView
na sua Activity ao restaurar o estado do Fragment (b/127313094). - Corrigida a lógica de
setTargetFragment()
ao substituir um Fragment de destino existente por um Fragment 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 aqui (link em inglês).
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).- 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
- Adicionada compatibilidade com a 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
- Adicionado um método
requireArguments()
que retorna uma@NonNull Bundle
ou gera umaIllegalStateException
(b/120241368). - Adicionada uma observação de que
getLifecycle()
,getViewLifecycleOwner()
egetViewLifecycleOwnerLiveData()
não podem ser modificados e que será considerado final em uma versão futura. Registre uma solicitação de recurso se você modifica 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ê modifica esse método atualmente. (aosp/880713). - Corrigido um problema de compatibilidade com o binário em 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). - Corrigido um problema em que os Fragments 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 conseguir oViewModelStoreOwner
, permitindo transmitir o Fragment 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.- Adicionado um método
requireView()
que retorna uma@NonNull View
ou gera umaIllegalStateException
(b/120241368). - Adicionado um método
requireParentFragment()
que retorna uma@NonNull Fragment
ou gera umaIllegalStateException
(b/120241368).
Correções de bugs
- Corrigida IllegalStateException: falha ao salvar o estado (b/120814739).
- Agora, os fragmentos restaurados do estado da instância salva sempre recebem um
Bundle
não nulo (b/119794496). - Os Fragments 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 um lambda para a construção do Fragment como uma alternativa à transmissão em uma instância
FragmentFactory
(aosp/812913).
Correções de bugs
- Corrigida uma IllegalStateException ao usar Fragments aninhados na pilha de retorno (b/119256498).
- Corrigida uma falha ao usar
FragmentScenario.recreate()
comFragmentFactory
(aosp/820540). - Corrigido um problema em que os Fragments de destino não podiam ser acessados depois que o Fragment 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 um
FragmentFactory
em qualquerFragmentManager
para controlar como novas instâncias do 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
- Correção de um problema que causava falhas nas operações do Fragment 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.