O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Fragmento

Segmente seu app em várias telas independentes hospedadas em uma atividade.
Atualização mais recente Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
1º de outubro de 2020 1.2.5 - 1.3.0-beta01 -

Como declarar dependências

Para adicionar uma dependência ao 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.

Criar novo problema (link em inglês)

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.3.0

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 estado Lifecycle para INITIALIZING, desde que o fragmento não tenha sido movido para CREATED (b/159662173).

Mudanças na API

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 usando 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() para CREATED 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 um FragmentManager não nulo sempre serão considerados ativos (aosp/1422346).
  • Os efeitos padrão de fragmento, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE e TRANSIT_FRAGMENT_FADE, agora usam Animator em vez de Animation (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 de Animations, o que significa que um fragmento com ambos executará apenas o Animator e ignorará a Animation (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 o 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 do 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 de Transition, ou um Animator e uma Transition em um fragmento individual seriam executados. (b/149569323)
  • A enterTransition e a exitTranstion 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 para STARTED 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 chamar findFragmentById() ou findFragmentByTag() do callback onAttachFragment(). (b/153082833)
  • Os fragmentos não chamam mais onCreateView() em fragmentos que são destruídos quando o fragmento que os substitui é adiado. (b/143915710)
  • A mensagem de erro ao tentar combinar instâncias de Transition do framework e Transition do AndroidX agora menciona o fragmento com a transição inválida. (b/155574969)

Mudanças de comportamento

  • Agora você pode chamar launch() em um ActivityResultLauncher no método de ciclo de vida onCreate() de um fragmento. (b/161464278)
  • Chamar registerForActivityResult() depois de onCreate() 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 API OnContextAvailableListener introduzida na atividade 1.2.0-alpha08 para restaurar o estado do FragmentManager. Todos os listeners adicionados às subclasses da FragmentActivity serão executados depois desse listener. (I513da)

Correções de bugs

  • ActivityOptions aprovadas ao usar startIntentSenderForResult() agora são respeitadas. (b/162247961)

Problema conhecido

  • Ao usar o novo gerenciador de estado, definir diretamente a visibilidade da visualização raiz do fragmento depois de onViewCreated() e antes de onResume() faz com que a visibilidade definida seja modificada pelo FragmentManager, que controla a visibilidade da visualização raiz. Como alternativa, use sempre as operações hide() e show() 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 de CREATED, STARTED ou RESUMED, em vez de sempre mover o fragmento para o estado RESUMED (b/159662750).
  • Adição de uma alternativa à API FragmentScenario de onFragment na forma do método de extensão withFragment 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 usa setMaxLifecycle() para implementar moveToState(), assim garante 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 por ViewTreeSavedStateRegistryOwner 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() em FragmentActivity e Fragment foi suspenso. Um novo FragmentOnAttachListener foi adicionado para oferecer uma alternativa mais flexível, permitindo a delegação de onAttachFragment() 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, link em inglês).

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 outro DialogFragment como fragmento filho (b/157195715, link em inglês).
  • 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, link em inglês).

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

Mudanças na API

  • As APIs setFragmentResult() e setFragmentResultListener() agora usam Bundle e FragmentResultListener não nulos, respectivamente. Para limpar explicitamente um resultado ou listener definido anteriormente, use os novos métodos clearFragmentResult() e clearFragmentResultListener() (b/155416778, link em inglês).
  • As extensões setFragmentResultListener() do Kotlin que usam um lambda agora estão marcadas como inline (b/155323404, link em inglês).

Mudanças de comportamento

  • O startActivityForResult(), startIntentSenderForResult() e requestPermissions em Fragment, anteriormente obsoletos, agora usam ActivityResultRegistry internamente, removendo assim a restrição de uso apenas dos bits inferiores (abaixo de 0xFFFF) para seus códigos de solicitação ao usar essas APIs (b/155518741, link em inglês).

Atualizações da documentação

  • A documentação sobre os construtores Fragment(@LayoutRes int) e DialogFragment(@LayoutRes int) foi expandida para esclarecer que eles devem ser chamados no construtor sem argumentos das subclasses ao usar o FragmentFactory padrão (b/153042497, link em inglês).

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 por meio de 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 menos STARTED (b/149787344, link em inglês).

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, link em inglês).
  • O uso das APIs startActivityForResult()/onActivityResult() e requestPermissions()/onRequestPermissionsResult() no Fragment foi suspenso. Use as APIs Activity Result (aosp/1290887, link em inglês).
  • Alteração interruptiva de Atividade 1.2.0-alpha04: o método prepareCall() foi renomeado para registerForActivityResult() (aosp/1278717, link em inglês).

Correções de bugs

  • O getViewLifecycleOwner() do fragmento agora é interrompido antes de onSaveInstanceState() ser chamado, espelhando o comportamento do ciclo de vida do fragmento (b/154645875, link em inglês).
  • Chamar setMenuVisibility(false) em um fragmento agora modifica corretamente a visibilidade dos menus fornecidos pelos fragmentos filhos (b/153593580, link em inglês).
  • Correção de um illegalStateException ao adicionar um fragmento à hierarquia de visualização de DialogFragment com FragmentContainerView (b/154366601, link em inglês).
  • O método getDefaultViewModelProviderFactory() em fragmentos não falha mais ao hospedar seus fragmentos fora de uma atividade (b/153762914, link em inglês).

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 em Fragment agora são final. (b/152439361, link em inglês)

Correções de bugs

  • Correção de uma regressão introduzida no Fragment 1.3.0-alpha02 ao usar BottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163, link em inglês)
  • Correção de uma falha ao usar prepareCall de um fragmento após uma mudança de configuração. (b/152137004, link em inglês)
  • Correção de um problema em que elementos compartilhados e transições de saída são ignorados ao usar setTargetFragment(). (b/152023196, link em inglês)
  • Do Fragment 1.2.4: as regras do Fragment ProGuard foram atualizadas para permitir a ofuscação de fragmentos mantidos. (b/151605338, link em inglês)
  • Do Fragment 1.2.4: a regra de lint FragmentLiveDataObserve foi desativada em classes DialogFragment porque o ciclo de vida e o ciclo de visualização delas sempre estão em sincronia, o que torna seguro usar this ou viewLifecycleOwner ao chamar observe. (b/151765086, link em inglês)

Mudanças na dependência

  • Os fragmentos dependem da Activity 1.2.0-alpha03, que teve melhorias significativas na API Activity Result introduzida na Activity 1.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 Activity 1.2.0-alpha02 para gerenciar os fluxos startActivityForResult()+onActivityResult() e requestPermissions()+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, link em inglês)

Mudanças na API

  • Agora, DialogFragment fornece um construtor que usa um @LayoutRes para indicar o layout que onCreateView() precisa inflar por padrão. (b/150327080, link em inglês)
  • O método onActivityCreated() está obsoleto. O código relativo à visualização do fragmento precisa ser feito em onViewCreated(), que é chamado imediatamente antes de onActivityCreated(), e outros códigos de inicialização precisam estar em onCreate(). Para receber um callback especificamente quando o onCreate() da atividade for concluído, é necessário registrar um LifeCycleObserver no Lifecycle da atividade em onAttach() e removê-lo assim que o callback onCreate() for recebido. (b/144309266, link em inglês)

Correções de bugs

  • Do Fragment 1.2.3: correção de um bug no DialogFragment que causou um StackOverflowError ao chamar getLayoutInflater() de dentro do onCreateDialog(). (b/117894767, aosp/1258664, link em inglês)
  • 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, link em inglês)
  • Do Fragment 1.2.3: 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, link em inglês)
  • Do Fragment 1.2.3: FragmentContainerView não gera mais uma UnsupportedOperationException para usar o construtor incorreto na visualização do layout. (b/149707833, link em inglês)

Problemas conhecidos

  • O BottomSheetDialogFragment deixou de posicionar corretamente a própria caixa de diálogo na tela. (b/151652127, link em inglês)

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 Lifecycle 2.3.0-alpha01 para que ela retorne o viewLifecycleOwner do fragmento como LifecycleOwner para qualquer View retornada por onCreateView(). (aosp/1182955, link em inglês)

Mudanças na API

  • O uso do método setRetainInstance() em fragmentos está obsoleto. Com a introdução de ViewModels, os desenvolvedores têm uma API específica para manter o estado que pode ser associado a gráficos de Activities, Fragments e Navigation . Isso permite que os desenvolvedores usem um Fragment normal não retido e mantenham o estado específico que querem reter separado, evitando uma fonte comum de vazamentos e mantendo as propriedades úteis de uma única criação e destruição do estado retido, ou seja, o construtor do ViewModel e o callback onCleared() recebido. (b/143911815, link em inglês)
  • Com o lançamento de ViewPager2 1.0.0, as classes FragmentPagerAdapter e FragmentStatePagerAdapter para interação com ViewPager ficaram obsoletas. Consulte Migrar do ViewPager para o ViewPager2. (b/145132715, link em inglês)

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âncias Fragment, corrigindo uma regressão introduzida no Fragment 1.2.1. (b/149665169, link em inglês)
  • As regras de lint require___() adicionadas no Fragment 1.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, link em inglês).
  • FragmentContainerView não gera mais um UnsupportedOperationException ao usar a visualização de layout no Android Studio. (b/149707833, link em inglês)
  • 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, link em inglês)

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 de onSaveInstanceState() ser chamado, espelhando o comportamento do ciclo de vida do fragmento. Isso foi lançado anteriormente em Fragment 1.3.0-alpha04 (b/154645875, link em inglês).
  • Chamar setMenuVisibility(false) em um fragmento agora modifica corretamente a visibilidade dos menus fornecidos pelos fragmentos filhos. Isso foi lançado anteriormente em Fragment 1.3.0-alpha04 (b/153593580, link em inglês).

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, link em inglês)
  • A regra de lint FragmentLiveDataObserve foi desativada em classes DialogFragment porque o ciclo de vida e o ciclo de visualização estão sempre em sincronia, o que torna seguro usar this ou viewLifecycleOwner ao chamar observe. (b/151765086, link em inglês)

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 um StackOverflowError ao chamar getLayoutInflater() de onCreateDialog(). (b/117894767, aosp/1258665, links em inglês)
  • 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, link em inglês)
  • 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, link em inglês)
  • FragmentContainerView não gera mais um UnsupportedOperationException para usar o construtor incorreto na visualização do layout. (b/149707833, link em inglês)

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 como LifecycleOwner para chamadas para OnBackPressedDispatcher em onCreateView(), onViewCreated() e onActivityCreated(). (b/142117657, link em inglês)
  • Inclusão de uma nova verificação de lint que confirma que você está usando a debugImplementation correto ao usar o artefato fragment-testing. (b/141500106, link em inglês)
  • Os fragmentos agora sugerem o uso dos métodos require___() associados para mensagens de erro mais descritivas em vez de checkNotNull(get___()), requireNonNull(get___()) ou get___()!! para todas as APIs Fragment que incluem um get e require equivalente. (aosp/1202883, link em inglês)

Correções de bugs

  • Correção dos arquivos do Fragment ProGuard para evitar avisos de R8 (b/148963981, link em inglês)
  • Melhoria na verificação de lint existente sugerindo o uso de viewLifecycleOwner ao usar observe para gerenciar também a versão do método de extensão livedata-ktx de observe. (b/148996309, link em inglês)
  • Correção da formatação de muitas verificações de lint (aosp/1157012, link em inglês)

Contribuições externas

  • Em nome do Slack, agradecemos a Zac Sweers por contribuir com as verificações de lint require___(). (aosp/1202883, link em inglês)

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 por meio dos métodos add e replace que tomam uma instância Class (ou as versões reificadas de Kotlin) agora têm o construtor padrão mantido pelo ProGuard. (b/148181315, link em inglês)
  • FragmentStatePagerAdapter e FragmentPagerAdapter não detectam mais exceções geradas por FragmentManager durante a execução de finishUpdate(). (aosp/1208711, link em inglês)
  • Correção de um problema em que FragmentManager.findFragment() não funcionava com fragmentos adicionados por meio da tag <fragment>. (b/147784323, link em inglês)
  • Os fragmentos inflados usando a tag <fragment> sempre recebem uma chamada para onInflate() antes de onCreate() no layout. (aosp/1215856, link em inglês)
  • Chamar toString() em uma instância FragmentManager não gera mais uma NullPointerException quando a Activity já está destruída. (b/148189412, link em inglês)

Mudanças na dependência

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 de FrameLayout ou outros layouts. Ele também é compatível com os mesmos class, android:name e android:tag opcional que a tag <fragment>, mas usa um FragmentTransaction 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 Transition 1.3.0) serem concluídas antes de chamar onDestroyView().
  • add() e replace() baseado em classe: adição de novas sobrecargas de add() e replace() em FragmentTransaction que levam Class<? extends Fragment> e Bundle opcional de argumentos. Esses métodos usam seu FragmentFactory 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 ao fragment-ktx.
  • Integração do ViewModel SavedState de Lifecycle: SavedStateViewModelFactory agora é a fábrica padrão aplicada ao usar o by viewModels(), by activityViewModels(), o construtor ViewModelProvider ou ViewModelProviders.of() com um Fragment.
  • Novas verificações de lint: nova verificação de lint que garante o uso de getViewLifecycleOwner() ao observar LiveData de onCreateView(), onViewCreated() ou onActivityCreated().
  • getFragmentManager() marcado como obsoleto: o uso dos métodos getFragmentManager() e requireFragmentManager() no Fragment está obsoleto e foi substituído por um único método getParentFragmentManager(), que retorna o valor não nulo FragmentManager ao qual o Fragment é adicionado. Você pode usar isAdded() para determinar se é seguro fazer a chamada.
  • FragmentManager.enableDebugLogging() marcado como obsoleto: o uso do método estático FragmentManager.enableDebugLogging está obsoleto. O FragmentManager agora respeita Log.isLoggable() para a tag FragmentManager, permitindo que você ative o registro DEBUG ou VERBOSE sem recompilar seu app.

Problemas conhecidos

  • Fragments referenciados somente pelo atributo class ou android:name em um FragmentContainerView 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, link em inglês)
  • Ao adicionar um NavHostFragment usando class ou android:name em XML com FragmentContainerView, não use findNavController() no onCreate() da sua atividade. (b/142847973, link em inglês)

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 que onViewCreated() fosse chamado incorretamente durante a destruição da atividade. (b/146290333, link em inglês)
  • 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 para CREATED 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, link em inglês)

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 e TRANSIT_FRAGMENT_FADE para evitar problemas visuais. (b/145468417, link em inglês)

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, links em inglês)
  • Os fragmentos filhos agora são interrompidos corretamente antes dos pais, quando a atividade que os contém chama onSaveInstanceState(). (b/144380645, link em inglês)
  • Correção de um problema em que as Views eram incorretamente marcadas como INVISIBLE depois de exibirem um Fragment oculto (b/70793925, link em inglês)
  • Agora as transições compartilhadas de elementos de Fragment lidam com as Views que foram rotacionadas, dimensionadas etc. (b/142835261, link em inglês)

Atualizações da documentação

  • Esclarecimento da documentação sobre suspensão de uso relacionada a setUserVisibleHint(). (b/143897055, link em inglês)
  • Documentação aprimorada sobre setFragmentFactory() e getFragmentFactory() para indicar melhor que a configuração de FragmentFactory também afetará os FragmentManagers filhos. (aosp/1170095, link em inglês)

Mudanças na dependência

  • Os fragmentos agora dependem do Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03 e da Activity 1.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 observar LiveData de onCreateView(), onViewCreated() ou onActivityCreated() (introduzido em Fragment1.2.0-rc01) agora usa a sintaxe de acesso à propriedade Kotlin viewLifecycleOwner em vez de getViewLifecycleOwner(). (aosp/1143821, link em inglês)

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 atributo class, além de android:name, espelhando a funcionalidade da tag <fragment>. (b/142722242, link em inglês)
  • Adicionada uma nova verificação do Lint que garante que você está usando getViewLifecycleOwner() ao observar LiveData de onCreateView(), onViewCreated() ou onActivityCreated(). (b/137122478, link em inglês)

Correções de bugs

  • Os callbacks onDismiss e onCancel em DialogFragment agora garantem que a DialogInterface transmitida a eles seja de valor não nulo e que getDialog() retorne valores não nulos quando executado. (b/141974033, link em inglês)
  • FragmentContainerView agora adiciona o Fragment definido por class ou android:name como parte da inflação, garantindo que findFragmentById() e findFragmentByTag() funcionem imediatamente depois. (b/142520327, link em inglês)
  • Corrigida uma IllegalStateException em FragmentContainerView devido ao estado sendo salvo. (b/142580713, link em inglês)
  • Corrigida uma UnsupportedOperationException em FragmentContainerView quando a classe FragmentContainerView é ofuscada. (b/142657034, link em inglês)

Problemas conhecidos

  • Fragments referenciados somente pelo atributo class ou android:name em um FragmentContainerView 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 para FragmentContainerView até que isso seja corrigido por aapt2. (b/142601969, link em inglês)

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 de FragmentContainerView, casos importantes como NavHostFragment. (b/142421837, link em inglês)

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 XML android:name e, opcionalmente, android:tag. Ao contrário da tag <fragment>, a FragmentContainerView usa uma FragmentTransaction normal internamente para adicionar o fragmento inicial, permitindo mais operações de FragmentTransaction em FragmentContainerView, e possibilita o uso da vinculação de visualizações para o layout. (b/139830628, b/141177981, links em inglês)
  • Fragments agora contém um aviso Lint que oferece uma correção rápida para substituir <fragment> por FragmentContainerView. (b/139830056, link em inglês)

Correções de bugs

  • Corrigida um ClassCastException ao usar androidx.transition. (b/140680619, link em inglês)
  • Agora, ao usar Transition 1.3.0-beta01, os Fragments aguardam as transições de androidx.transition, além das animações e transições de framework, que foram corrigidas em Fragment 1.2.0-alpha03 e Fragment 1.2.0-alpha02, respectivamente, para concluir antes de enviar onDestroyView(). (aosp/1119841, link em inglês)
  • Ao usar a Transition 1.3.0-beta01, os Fragments agora cancelam as transições androidx.transition corretamente antes de iniciar novas transições/animações no mesmo contêiner. (aosp/1119841, link em inglês)
  • Corrigido um problema na API 17 e anteriores ao usar transições androidx.transition na visualização raiz do seu Fragment ao usar FragmentContainerView. (b/140361893, link em inglês)
  • O artefato fragment-testing agora depende do AndroidX Test 1.2.0 para corrigir uma incompatibilidade com o Espresso 3.2.0 mais recente. (b/139100149, link em inglês)
  • Remoção do uso de Log.w no FragmentManager. (aosp/1126468, link em inglês)

Problemas conhecidos

  • onInflate() do Fragment não recebe atributos adequados de FragmentContainerView, casos importantes como NavHostFragment. (b/142421837, link em inglês)

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() e requireFragmentManager() em Fragment foi suspenso e substituído por um único getParentFragmentManager(), que retorna o valor não nulo FragmentManager a que o Fragment é adicionado. Você pode usar isAdded() para determinar se é seguro ligar. (b/140574496, link em inglês)
  • O uso do método FragmentManager.enableDebugLogging estático foi suspenso. O FragmentManager agora respeita Log.isLoggable() para a tag FragmentManager, permitindo que você ative o registro DEBUG ou VERBOSE sem recompilar seu app. (aosp/1116591, link em inglês)

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, link em inglês)
  • Corrigido um problema em que Fragments chamava Activity.findViewById() em locais que antes não chamava. (aosp/1116431, link em inglês)

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, link em inglês)

Correções de bugs

  • FragmentContainerView agora inverte a ordem do desenho corretamente ao destacar fragmentos da pilha de retorno. (b/139104187, link em inglês)
  • Corrigido um problema em que a animação errada era executada ao destacar um fragment e ao adicionar ao fragment ao mesmo tempo. (b/111659726, link em inglês)
  • 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 enviar onDestroyView(). (b/138741697, link em inglês)

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 usar by viewModels(), by activityViewModels(), o construtor ViewModelProvider ou ViewModelProviders.of() com um Fragment. (b/135716331, link em inglês)
  • As animações padrão ao usar TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE com setTransition em uma FragmentTransaction foram atualizadas para corresponder às animações usadas pelas atividades nos dispositivos Android 10. (aosp/1012812, aosp/1014730, links em inglês)

Mudanças na API

  • Introdução de FragmentContainerView como o contêiner altamente recomendado para Fragments adicionados dinamicamente, substituindo o uso de FrameLayout, 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, links em inglês)
  • 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 em fragment-ktx. (aosp/1090757, link em inglês)
  • Adicionadas novas sobrecargas de add() e replace() em FragmentTransaction, que usa Class<? extends Fragment> e Bundle argumentos opcionais. Esses métodos usam seu FragmentFactory 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 ao fragment-ktx (b/126124987, link em inglês)
  • Adicionadas anotações @MainThread aos callbacks de ciclo de vida de Fragment. (b/127272564, link em inglês)
  • Suspensão do uso das APIs relacionadas ao título da localização atual em FragmentTransaction e .FragmentManager.BackStackEntry (b/138252944, link em inglês)
  • O uso do método setTransitionStyle em FragmentTransaction foi suspenso. (aosp/1011537, link em inglês)
  • Muitos dos métodos em FragmentManager não são mais abstract. O próprio FragmentManager permanece abstract e não pode ser diretamente instanciado ou estendido. Você continuará a receber apenas uma instância existente de getSupportFragmentManager(), 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, link em inglês)
  • De Fragment 1.1.0-rc03: corrigido um problema em que chamar postponeEnterTransition() com um tempo limite mais de uma vez não cancelava os tempos limites anteriores. (b/137797118, link em inglês)
  • De Fragment 1.1.0-rc02: corrigida uma falha em FragmentPagerAdapter e FragmentStatePagerAdapter ao remover o item atual. (b/137209870, link em inglês)
  • Agora, os Fragments aguardam o término das animações antes de enviar onDestroyView(). (b/136110528, link em inglês)
  • 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, link em inglês)
  • Adicionada uma solução alternativa a IllegalStateExceptions ao usar FragmentPagerAdapter e FragmentStatePagerAdapter em testes Robolectric. (b/137201343, link em inglês)

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, o FragmentManager chama requestApplyInsets() depois de anexar a visualização do Fragment e logo antes de chamar onViewCreated(), garantindo que sua visualização tenha sempre as inserções corretas. (b/135945162)

Correções de bugs

  • Corrigida uma NullPointerException ao exibir uma FragmentTransaction que usava setPrimaryNavigationFragment() antes de replace(). (b/134673465, link em inglês)

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 classe FragmentScenario 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 um FragmentManager 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 e by 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 um FragmentTransaction. Isso substitui a setUserVisibleHint() obsoleta. FragmentPagerAdapter e FragmentStatePagerAdapter 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 em FragmentActivity que leva um ID R.layout, indicando o layout que será definido como a visualização de conteúdo, em vez de chamar setContentView() em onCreate(). 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 em Fragment que leva um ID R.layout, indicando o layout que será usado para esse fragment, em ver de substituir onCreateView(). O layout inflado pode ser configurado em onViewCreated().
  • 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, link em inglês)

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 (link em inglês).

Correções de bugs

  • Corrigida uma falha em FragmentPagerAdapter e FragmentStatePagerAdapter ao remover o item atual. (b/137209870, link em inglês)

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 (link em inglês).

Correções de bugs

  • Agora, os Fragments atualizam corretamente a própria visibilidade ao usar as operações show() ou hide() enquanto a transição é executada. (b/133385058, link em inglês)
  • Corrigida uma NullPointerException ao exibir uma FragmentTransaction que usava setPrimaryNavigationFragment() antes de replace(). (b/134673465, link em inglês)

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 (link em inglês).

Correções de bugs

  • Agora, os callbacks de androidx.lifecycle.Lifecycle (relacionados especificamente com STARTED, RESUMED, PAUSED, STOPPEDe DESTROYED) para Fragments aninhados são aninhados corretamente. (b/133497591, link em inglês)
  • As instâncias de OnBackPressedCallback registradas no onCreate() de um Fragment agora têm precedência sobre o FragmentManager filho. (b/133175997, link em inglês)
  • 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, link em inglês)

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 (link em inglês)

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 automaticamente startPostponedEnterTransition(). b/120803208 (link em inglês)

Mudanças na API

  • Alteração importante: o método FragmentFactory instantiate, anteriormente obsoleto, que utilizava um Bundle, foi removido. aosp/953856 (link em inglês)
  • Alteração importante: as constantes RESUME_ONLY_CURRENT_FRAGMENT e USE_SET_USER_VISIBLE_HINT em FragmentPagerAdapter e FragmentStatePagerAdapter foram renomeadas para BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT e BEHAVIOR_SET_USER_VISIBLE_HINT, respectivamente. aosp/954782 (link em inglês)

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 (link em inglês)
  • Ao usar setMaxLifecycle(Lifecycle.State.CREATED), a visualização de Fragments será devidamente destruída. aosp/954180 (link em inglês)

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 uma FragmentTransaction. Isso substitui a setUserVisibleHint() obsoleta. FragmentPagerAdapter e FragmentStatePagerAdapter têm um novo construtor que permite alternar para o novo comportamento. (b/129780800, link em inglês)

Mudanças na API

  • moveToState(STARTED) em FragmentScenario agora só pode ser chamado em dispositivos com API de nível 24 ou posterior. (b/129880016, link em inglês)

Mudanças de comportamento

  • Como consequência de (b/129907905, link em inglês), 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 fragment 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 construtor contentLayoutId de FragmentActivity ou AppCompatActivity. (b/129907905, link em inglês)
  • 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, link em inglês)
  • Corrigida uma falha em restoreSaveState causada por uma dessincronização dos fragmentos retidos depois de o estado da instância ser salvo. (b/130433793, link em inglês) (aosp/947824, link em inglês)
  • Corrigidos problemas em que um OnBackPressedCallback adicionado com um ciclo de vida do fragment não era chamado se o FragmentManager tivesse uma pilha de retorno. Consulte androidx.activity 1.0.0-alpha07 para ver mais detalhes. (aosp/948209, link em inglês)
  • 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, link em inglês)

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 e FragmentActivity 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, link em inglês)
  • Agora o onActivityResult() de FragmentActivity está marcado corretamente como @CallSuper. (b/127971684, link em inglês)
  • O método instantiate de FragmentFactory que usa um argumento Bundle se tornou obsoleto, e os apps precisam usar a nova sobrecarga instantiate que não usa um Bundle. (b/128836103, link em inglês)
  • Os métodos FragmentScenario agora estão devidamente anotados com @StyleRes. (aosp/924193, link em inglês)
  • O uso de FragmentTabHost foi suspenso. (b/127971835, link em inglês)
  • getThemedContext() do FragmentActivity foi removido. (aosp/934078, link em inglês)

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, link em inglês)
  • Corrigida a lógica de setTargetFragment() ao substituir um Fragment de destino existente por um Fragment ainda não anexado ao FragmentManager. (aosp/932156, link em inglês)

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, link em inglês)

Mudanças de comportamento

  • A ação de chamar remove(), hide(), show(), detach() e setPrimaryNavigationFragment() com um Fragment anexado a um FragmentManager diferente agora gera uma IllegalStateException, em vez de causar uma falha silenciosa. (aosp/904301)

Correções de bugs

  • onNewIntent para FragmentActivity agora é corretamente marcado com @CallSuper (b/124120586)
  • Corrigido um problema em que o onDismiss() do DialogFragment podia ser chamado duas vezes ao usar getDialog().dismiss() ou getDialog().cancel(). (b/126563750, link em inglês)

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 de onCreateView(). É recomendado fazer um trabalho relacionado à visualização em onViewCreated(). (aosp/837619, link em inglês)
  • Agora, fragment-testing depende do androidx.test:core-ktx 1.1.0 estável. (b/121209673, link em inglês)
  • Agora, você pode usar openActionBarOverflowOrOptionsMenu com FragmentScenario para testar os menus de opções hospedados do Fragment. (b/121126668, link em inglês)

Mudanças na API

  • Adicionado um método requireArguments() que retorna uma @NonNull Bundle ou gera uma IllegalStateException (b/120241368, link em inglês)
  • Adicionada uma observação de que getLifecycle(), getViewLifecycleOwner() e getViewLifecycleOwnerLiveData() não pode 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/880714, link em inglês)
  • Adicionada 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, link em inglês)
  • Corrigido um problema de compatibilidade com o binário em versões anteriores de Fragments. (aosp/887877) (aosp/889834, links em inglês)

Correções de bugs

  • Os fragmentos de destino são limpos corretamente quando você transmite nullpara setTargetFragment(). (aosp/849969, link em inglês)
  • Corrigido um problema em que os Fragments de destino às vezes ficavam indisponíveis em onDestroy() ou depois dele. (b/122312935, link em inglês)
  • O onDismiss() do DialogFragment agora é chamado antes de onDestroy(). (aosp/874133) (aosp/890734, links em inglês)

Versão 1.1.0-alpha03

17 de dezembro de 2018

Novos recursos

  • O Fragment agora implementa BundleSavedStateRegistryOwner e depende da biblioteca SavedState recém-lançada. [aosp/824380, link em inglês]
  • Um delegado da propriedade by activityViewModels Kotlin foi adicionado para recuperar os ViewModels associados à Activity contida. [b/119050253, link em inglês]
  • O delegado da propriedade by viewModels Kotlin foi expandido para usar um método lambda opcional para conseguir o ViewModelStoreOwner, permitindo transmitir o Fragment pai ou outro ViewModelStoreOwner personalizado com um código como val viewModel: MyViewModel by viewModels(::requireParentFragment). [b/119050253, link em inglês]

Mudanças na API

  • FragmentScenario agora permite especificar um tema, como Theme.AppCompat. [b/119054431] Essa é uma alteração importante.
  • Adicionado um método requireView() que retorna uma @NonNull View ou gera uma IllegalStateException [b/120241368, link em inglês]
  • Adicionado um método requireParentFragment() que retorna uma @NonNull Fragment ou gera uma IllegalStateException [b/120241368, link em inglês]

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, link em inglês]
  • Os Fragments removidos não reutilizam mais o objeto Lifecycle se forem adicionados novamente. [b/118880674, link em inglês]

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, link em inglês)

Correções de bugs

  • Corrigida uma IllegalStateException ao usar Fragments aninhados na pilha de retorno. (b/119256498)
  • Corrigida uma falha ao usar FragmentScenario.recreate() com FragmentFactory (aosp/820540, link em inglês)
  • 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 qualquer FragmentManager 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), link em inglês.

Problemas conhecidos

  • Fragments de destino não podem ser acessados depois que um Fragment é removido do FragmentManager.
  • fragment-testing depende de androidx.test:core:1.0.0-beta01, em vez do androidx.test:core:1.0.0 correto.