Фрагмент

Разделите свое приложение на несколько независимых экранов, размещенных в Activity.
Последнее обновление Стабильный релиз Кандидат на релиз Бета-релиз Альфа-релиз
20 мая 2025 г. 1.8.7 - - -

Объявление зависимостей

Чтобы добавить зависимость от Fragment, необходимо добавить репозиторий Google Maven в свой проект. Прочитайте репозиторий Google Maven для получения дополнительной информации.

Добавьте зависимости для необходимых артефактов в файл build.gradle для вашего приложения или модуля:

классный

dependencies {
    def fragment_version = "1.8.7"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    // Compose
    implementation "androidx.fragment:fragment-compose:$fragment_version"
    // Testing Fragments in Isolation
    debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version"
    androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version"
}

Котлин

dependencies {
    val fragment_version = "1.8.7"

    // Java language implementation
    implementation("androidx.fragment:fragment:$fragment_version")
    // Kotlin
    implementation("androidx.fragment:fragment-ktx:$fragment_version")
    // Compose
    implementation("androidx.fragment:fragment-compose:$fragment_version")
    // Testing Fragments in Isolation
    debugImplementation("androidx.fragment:fragment-testing:$fragment_version")
}

Дополнительную информацию о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают сделать Jetpack лучше. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новый выпуск

Более подробную информацию смотрите в документации Issue Tracker .

Версия 1.8

Версия 1.8.7

20 мая 2025 г.

Выпущен androidx.fragment:fragment-*:1.8.7 . Версия 1.8.7 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​проблема с FragmentManager , не находящимся в правильном состоянии после операций pop и replace в одном кадре, что могло привести к сбою в сочетании с выталкиванием обратного стека либо через popBackStack , либо с помощью предиктивного жеста назад. ( I50ad1 )
  • Исправлен сбой, вызванный использованием AndroidX Transitions и возникновением случая, когда быстрые последовательные транзакции фрагментов пытались отменить не начатый переход, а библиотека AndroidX Transition не очищала состояние перехода должным образом. (см. b/414612221 ). ( Ib5235 )

Версия 1.8.6

12 февраля 2025 г.

Выпущен androidx.fragment:fragment-*:1.8.6 . Версия 1.8.6 содержит эти коммиты .

Исправление ошибок

  • Переопределение setOnApplyWindowInsetsListener для FragmentContainerView теперь принимает нулевой прослушиватель, что соответствует тому, что позволяет фреймворк. ( I575f0 , b/282790626 )

Версия 1.8.5

30 октября 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.5 . Версия 1.8.5 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​ошибка IllegalStateException , которая вызывалась функцией saveBackStack только после отмены или прерывания предиктивного жеста «Назад». ( I3387d , b/342419080 )

Версия 1.8.4

2 октября 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.4 . Версия 1.8.4 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой быстрое нажатие системной кнопки «Назад» или быстрое выполнение жеста «Назад» приводило к сбою Fragments при использовании Androidx Transitions. ( Ibc038 , b/364804225 )
  • Исправлена ​​проблема во фрагментах, из-за которой прерывание предиктивного жеста «назад» приводило к тому, что менеджер фрагментов переходил в неопределенное состояние и даже отображал неправильный фрагмент. ( If82e2 , b/338624457 )
  • Исправлена ​​ошибка UninitializedPropertyAccessException в AndroidFragment при динамической замене класса, который использует ваш экземпляр AndroidFragment . ( I12dea )

Версия 1.8.3

4 сентября 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.3 . Версия 1.8.3 содержит эти коммиты .

Исправление ошибок

  • FragmentManager теперь правильно учитывает ожидающие операции при обработке жеста Predictive Back. Это должно гарантировать, что выполнение системного возврата больше не вызовет IndexOutOfBoundsException . ( I9ba32 , b/342316801 )
  • AndroidFragment больше не дает сбой, если он добавляется в композицию, когда состояние содержащего его действия/фрагмента уже сохранено. ( I985e9 , b/356643968 )

Версия 1.8.2

24 июля 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.2 . Версия 1.8.2 содержит эти коммиты .

Исправление ошибок

  • AndroidFragment теперь правильно обрабатывает случаи, когда родительский фрагмент помещается в обратный стек фрагментов, избегая проблем «Представление для идентификатора не найдено» при возврате к этому фрагменту. ( I94608 )
  • Фрагменты, добавленные через метод FragmentTransaction.add , который принимает ViewGroup , теперь ждут onContainerAvailable перед переходом к onStart() . Это влияет на пользователей этого API, например AndroidFragment , который теперь ждет, пока AndroidFragment снова войдет в композицию, прежде чем перемещать его через onStart() . ( I94608 )

Версия 1.8.1

26 июня 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.1 . Версия 1.8.1 содержит эти коммиты .

Исправление ошибок

  • Исправлена ​​проблема, когда фрагменты без контейнера немедленно DESTROYED при запуске предиктивного жеста назад. Теперь они удерживаются в состоянии CREATED до завершения жеста. ( If6b83 , b/345244539 )

Версия 1.8.0

12 июня 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.0 . Версия 1.8.0 содержит эти коммиты .

Важные изменения по сравнению с версией 1.7.0

  • Артефакт fragment-compose теперь содержит AndroidFragment Composable , который позволяет добавлять фрагменты в иерархию Compose через имя класса фрагмента. Он автоматически обрабатывает сохранение и восстановление состояния фрагмента. Это следует использовать в качестве прямой замены ранее рекомендованного подхода использования AndroidViewBinding для раздувания фрагмента.
  • Обратный вызов onBackStackChangeCancelled в интерфейсе OnBackStackChangedListener FragmentManager теперь срабатывает как часть выполнения операций в FragmentManager , приближая его к времени обратного вызова onBackStackChangeCommitted .

Версия 1.8.0-rc01

29 мая 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.0-rc01 . Версия 1.8.0-rc01 содержит эти коммиты .

Исправление ошибок

  • Обратный вызов onBackStackChangeCancelled в интерфейсе FragmentManagers OnBackStackChangedListener теперь срабатывает как часть выполнения операций в FragmentManager , приближая его по времени к обратному вызову onBackStackChangeCommitted . ( I5ebfb , b/332916112 )

Версия 1.8.0-beta01

14 мая 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.0-beta01 . Версия 1.8.0-beta01 содержит эти коммиты .

Исправление ошибок

  • Из фрагмента 1.7.1 : Предиктивный возврат теперь будет работать только для транзакций, в которых все фрагменты имеют либо Animator, либо Seekable Androidx Transition. Это устраняет проблему, при которой отмена частично искомой транзакции приводила к черному экрану. ( I43037 , b/339169168 )

Версия 1.8.0-альфа02

17 апреля 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.0-alpha02 . Версия 1.8.0-alpha02 содержит эти коммиты .

Исправление ошибок

  • Из фрагмента 1.7.0-rc02 : добавлены журналы, указывающие, почему установка sharedElement без каких-либо других переходов не будет выполнена. ( Iec48e )
  • Из фрагмента 1.7.0-rc02 : исправлена ​​ошибка, при которой если не подлежащий поиску общий элемент был добавлен в транзакции, где все остальные переходы были подлежащими поиску, происходил сбой. Теперь транзакция будет правильно считаться не подлежащей поиску. ( I18ccd )

Версия 1.8.0-альфа01

3 апреля 2024 г.

Выпущен androidx.fragment:fragment-*:1.8.0-alpha01 . Версия 1.8.0-alpha01 содержит эти коммиты .

Новые возможности

  • Новый AndroidFragment Composable позволяет добавлять фрагменты в иерархию Compose через имя класса фрагмента. Он автоматически обрабатывает сохранение и восстановление состояния фрагмента. Это может быть использовано как прямая замена AndroidViewBinding Composable . ( b/312895363 , Icf841 )

Изменения в документации

  • Обновлена ​​документация по API OnBackStackChangedListener , чтобы указать, когда они вызываются и как их следует использовать. ( I0bfd9 )

Обновление зависимости

Версия 1.7

Версия 1.7.1

14 мая 2024 г.

Выпущен androidx.fragment:fragment-*:1.7.1 . Версия 1.7.1 содержит эти коммиты .

Исправление ошибок

  • Предиктивный возврат теперь будет работать только для транзакций, в которых все фрагменты имеют либо Animator, либо Seekable Androidx Transition. Это устраняет проблему, при которой отмена частично seekable транзакции приводила к пустому экрану. ( I43037 , b/339169168 )

Версия 1.7.0

1 мая 2024 г.

Выпущен androidx.fragment:fragment-*:1.7.0 . Версия 1.7.0 содержит эти коммиты .

Поддержка предиктивного жеста «Назад»

  • Фрагменты теперь поддерживают функцию Predictive in-app back при использовании Animator или при использовании AndroidX Transition 1.5.0 . Это позволяет пользователям использовать жест «назад», чтобы увидеть предыдущий фрагмент, ища Animator/Transition, прежде чем принять решение о фиксации транзакции путем завершения жеста или отмены.
Система перехода XML-ресурс Поддерживает функцию «Предиктивный возврат»
Animation R.anim Нет
Animator R.animator Да
Transition фреймворка R.transition Нет
AndroidX Transition с Transition 1.4.1 или ниже R.transition Нет
Transition AndroidX с Transition 1.5.0 R.transition Да

Если вы видите какие-либо проблемы с поддержкой Predictive Back в Fragments после того, как вы выбрали предиктивный жест назад , пожалуйста, отправьте запрос против Fragment с примером проекта, который воспроизводит вашу проблему. Вы можете отключить предиктивный возврат, используя FragmentManager.enabledPredictiveBack(false) в onCreate() вашей Activity.

FragmentManager.OnBackStackChangedListener() теперь предоставляет onBackStackChangeProgressed() и onBackStackChangeCancelled() для получения прогнозируемых событий обратного хода выполнения и отмены соответственно.

Фрагмент Составить Артефакт

Создан новый артефакт fragment-compose , который ориентирован на поддержку приложений, находящихся в процессе перехода от архитектуры на основе Fragment к архитектуре, полностью основанной на Compose.

Первая функция, доступная в этом новом артефакте, — это метод расширения content для Fragment , который упрощает использование Compose для пользовательского интерфейса отдельного фрагмента путем создания ComposeView и установки правильной ViewCompositionStrategy .

  class ExampleFragment : Fragment() {

      override fun onCreateView(
          inflater: LayoutInflater,
          container: ViewGroup?,
          savedInstanceState: Bundle?
      ) = content {
          // Write your @Composable content here
          val viewModel: ExampleViewModel = viewModel()

          // or extract it into a separate, testable method
          ExampleComposable(viewModel)
      }
  }

Версия 1.7.0-rc02

17 апреля 2024 г.

Выпущен androidx.fragment:fragment-*:1.7.0-rc02 . Версия 1.7.0-rc02 содержит эти коммиты .

Исправление ошибок

  • Добавлены журналы, указывающие, почему установка sharedElement без каких-либо других переходов не будет выполнена. ( Iec48e )
  • Исправлена ​​ошибка, при которой если не подлежащий поиску общий элемент был добавлен в транзакции, где все другие переходы были подлежащими поиску, происходил сбой. Теперь транзакция будет правильно считаться не подлежащей поиску. ( I18ccd )

Версия 1.7.0-rc01

3 апреля 2024 г.

Выпущен androidx.fragment:fragment-*:1.7.0-rc01 . Версия 1.7.0-rc01 содержит эти коммиты .

Обновление зависимости

Версия 1.7.0-beta01

20 марта 2024 г.

Выпущен androidx.fragment:fragment-*:1.7.0-beta01 . Версия 1.7.0-beta01 содержит эти коммиты .

Изменения API

  • FragmentHostCallback теперь написан на Kotlin, так что допустимость значения NULL универсального типа Host соответствует допустимости значения NULL возвращаемого типа onGetHost() . ( I40af5 )

Исправление ошибок

  • Исправлена ​​проблема, при которой при выполнении жеста Predictive Back на фрагменте, который не находится в контейнере, этот фрагмент никогда не уничтожался. Теперь фрагмент будет немедленно перемещен в конечное состояние. ( Ida0d9 )
  • Исправлена ​​ошибка в Fragments, из-за которой прерывание входящих переходов с помощью предиктивного жеста «назад» приводило к уничтожению входящего вида и оставляло пустой экран. ( Id3f22 , b/319531491 )

Версия 1.7.0-альфа10

7 февраля 2024 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha10 . Версия 1.7.0-alpha10 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​известная проблема в предыдущем выпуске Fragment, из-за которой при использовании поддержки Predictive Back для Animator или AndroidX Transition фрагменты вызывали исключение NullPointerException из handleOnBackProgressed , если FragmentManager.OnBackStackChangedListener не был добавлен через addOnBackStackChangedListener . ( I7c835 )

Версия 1.7.0-альфа09

24 января 2024 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha09 . Версия 1.7.0-alpha09 содержит эти коммиты.

Фрагмент Составить Артефакт

Создан новый артефакт fragment-compose , который ориентирован на поддержку приложений, находящихся в процессе перехода от архитектуры на основе Fragment к архитектуре, полностью основанной на Compose.

Первая функция, доступная в этом новом артефакте, — это метод расширения content для Fragment , который упрощает использование Compose для пользовательского интерфейса отдельного фрагмента путем создания ComposeView и установки правильной ViewCompositionStrategy . ( 561cb7 , b/258046948 )

class ExampleFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = content {
        // Write your @Composable content here
        val viewModel: ExampleViewModel = viewModel()

        // or extract it into a separate, testable method
        ExampleComposable(viewModel)
    }
}

Новые возможности

  • FragmentManager.OnBackStackChangedListener() теперь предоставляет onBackStackChangeProgressed() и onBackStackChangeCancelled() для получения прогнозируемых событий обратного хода выполнения и отмены соответственно. ( 214b87 )

Известная проблема

  • При использовании поддержки Predictive Back от Fragment для Animator или AndroidX Transition, Fragments выдаст исключение NullPointerException из handleOnBackProgressed , если FragmentManager.OnBackStackChangedListener не был добавлен через addOnBackStackChangedListener . Добавление слушателя вручную обойдет сбой. Исправление будет доступно в следующем выпуске Fragments.

Версия 1.7.0-альфа08

10 января 2024 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha08 . Версия 1.7.0-alpha08 содержит эти коммиты.

Очистить

Версия 1.7.0-альфа07

29 ноября 2023 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha07 . Версия 1.7.0-alpha07 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка NullPointerException , вызванная установкой перехода общего элемента, а также отсутствием установки enter/exitTransition. ( I8472b )
  • Из фрагмента 1.6.2 : когда фрагмент FragmentContainerView инфляционно развернут, его состояния, такие как FragmentManager , Host и id, теперь доступны в обратном вызове onInflate . ( I1e44c , b/307427423 )
  • Из фрагмента 1.6.2 : при использовании clearBackStack для удаления набора фрагментов все вложенные ViewModel фрагмента теперь будут очищаться при очистке ViewModels родительского фрагмента. ( I6d83c , b/296173018 )

Версия 1.7.0-альфа06

4 октября 2023 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha06 . Версия 1.7.0-alpha06 содержит эти коммиты.

Обновление зависимости

  • Фрагменты были обновлены для использования с новым API animateToStart , добавленным в Transition 1.5.0-alpha04 .

Версия 1.7.0-альфа05

20 сентября 2023 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha05 . Версия 1.7.0-alpha05 содержит эти коммиты.

Новые возможности

  • Фрагменты теперь поддерживают Predictive back при использовании Androidx Transitions. Это позволяет вам использовать жест назад для перехода к предыдущему фрагменту с помощью вашего пользовательского Androidx Transition, прежде чем решить, следует ли зафиксировать или отменить транзакцию с помощью завершенного жеста. Для включения этой функции вам необходимо использовать версию Transition 1.5.0-alpha03 . ( Ib49b4 , b/285175724 )

Известные проблемы

  • В настоящее время существует проблема, при которой после отмены жеста «назад» с переходом в следующий раз при запуске жеста «назад» переход не будет выполнен, что приведет к пустому экрану. Это может быть вызвано проблемой в библиотеке Transition. ( b/300157785 ). Если вы видите эту проблему, отправьте запрос на Fragment с примером проекта, который воспроизводит вашу проблему. Вы можете отключить предиктивный возврат, используя FragmentManager.enabledPredictiveBack(false) в onCreate() вашей Activity.

Версия 1.7.0-альфа04

6 сентября 2023 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha04 . Версия 1.7.0-alpha04 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка отмены предиктивного жеста «Назад», из-за которой фрагменты не достигали правильного состояния жизненного цикла. ( I7cffe , b/297379023 )
  • Исправлена ​​регрессия, при которой анимации могли запускаться с переходами. ( I59f36 )
  • Исправлена ​​ошибка при использовании предиктивного возврата с фрагментами, из-за которой попытка вернуться назад дважды в быстрой последовательности на предпоследнем фрагменте в стеке возврата приводила к сбою. ( Ifa1a4 )

Версия 1.7.0-альфа03

23 августа 2023 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha03 . Версия 1.7.0-alpha03 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​проблема с фрагментами при использовании предиктивного возврата, из-за которой первый фрагмент в стеке возврата менеджера фрагментов пропускался, а действие завершалось при использовании системного возврата с помощью навигации с помощью 3 кнопок или предиктивного жеста возврата. ( I0664b , b/295231788 )

Версия 1.7.0-альфа02

9 августа 2023 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha02 . Версия 1.7.0-alpha02 содержит эти коммиты.

Исправление ошибок

  • При использовании фрагментов с предиктивными жестами возврата из API 34, если вы используете систему переходов, которая не поддерживает поиск ( Animations , Transitions ) или вообще не поддерживает переходы, фрагменты теперь будут ждать завершения жеста, прежде чем выполнять действие возврата. ( I8100c )

Версия 1.7.0-альфа01

7 июня 2023 г.

Выпущен androidx.fragment:fragment-*:1.7.0-alpha01 . Эта версия разрабатывается во внутренней ветке.

Новые возможности

  • Фрагменты теперь поддерживают Predictive in-app back при использовании Animator . Это позволяет вам использовать жест назад, чтобы увидеть предыдущий фрагмент с вашим пользовательским Animator, прежде чем решить, следует ли зафиксировать транзакцию с помощью завершенного жеста или отменить ее. Вы также можете отключить это новое поведение, используя экспериментальный enablePredictiveBack() и передав false .

Версия 1.6

Версия 1.6.2

1 ноября 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.2 . Версия 1.6.2 содержит эти коммиты.

Исправление ошибок

  • Когда фрагмент FragmentContainerView расширен, его состояния, такие как FragmentManager , Host и id, теперь доступны в обратном вызове onInflate . ( I1e44c , b/307427423 )
  • При использовании clearBackStack для удаления набора фрагментов ViewModel любого вложенного фрагмента теперь будет очищаться при очистке ViewModels родительского фрагмента. ( I6d83c , b/296173018 )

Версия 1.6.1

26 июля 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.1 . Версия 1.6.1 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​проблема, при которой сохраненное состояние, сохраненное, когда активность была остановлена, но не уничтожена, неправильно кэшировалось даже после того, как экземпляр фрагмента был перемещен обратно в состояние RESUMED . Это приводило к повторному использованию кэшированного состояния, если этот экземпляр фрагмента находился в стеке возврата при использовании API нескольких стеков возврата для сохранения и восстановления этого фрагмента. ( I71288 , b/246289075 )

Обновление зависимости

  • Fragment теперь зависит от Activity 1.7.2 . Это устраняет проблему, при которой пользователи Kotlin не могли расширять ComponentDialog без явной зависимости от Activity. ( b/287509323 )

Версия 1.6.0

7 июня 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.0 . Версия 1.6.0 содержит эти коммиты.

Важные изменения по сравнению с версией 1.5.0

  • Сохраненное состояние Fragment было полностью разделено между состоянием частной библиотеки (пользовательские классы Parcelable ) и состоянием, предоставленным разработчиком, которое теперь всегда хранится в Bundle , что позволяет точно определить, откуда берется состояние фрагмента.
  • Интерфейс FragmentManager.OnBackStackChangedListener был расширен двумя дополнительными обратными вызовами onBackStackChangeStarted и onBackStackChangeCommitted , которые вызываются для каждого Fragment непосредственно перед его добавлением/удалением из обратного стека фрагмента и сразу после фиксации транзакции соответственно.
  • FragmentStrictMode добавил новый WrongNestedHierarchyViolation , который определяет, когда дочерний фрагмент вложен в иерархию View своего родительского элемента, но не добавлен в childFragmentManager родительского элемента.
  • API-интерфейсы Fragment и FragmentManager , которые принимают Intent или IntentSender , теперь правильно аннотированы с помощью @NonNull , чтобы предотвратить передачу значения null, поскольку значение null всегда немедленно приводило к сбою соответствующих API-интерфейсов Android, которые вызывают эти методы.
  • DialogFragment теперь предоставляет доступ к базовому ComponentDialog через API requireComponentDialog() .
  • Фрагмент теперь зависит от Lifecycle 2.6.1 .
  • Фрагмент теперь зависит от SavedState 1.2.1 .
  • Фрагмент теперь зависит от ProfileInstaller 1.3.0 .
  • Артефакт fragment-testing-manifest отделяет записи манифеста от остальных компонентов fragment-testing. Это означает, что вы можете сделать следующее:

    debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
    androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
    

    Это позволяет избежать конфликтов из-за разницы версий между fragment-testing и androidx.test

Версия 1.6.0-rc01

10 мая 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.0-rc01 . Версия 1.6.0-rc01 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой ActivityResult отправлялись с неправильным кодом запроса при последовательном выполнении нескольких запросов startActivityForResult . ( If0b9d , b/249519359 )
  • Исправлена ​​ошибка, из-за которой обратные вызовы onBackStackChangeListener отправлялись для транзакций, которые фактически не изменяли стек возврата, если они были смешаны с транзакциями, которые это делали. ( I0eb5c , b/279306628 )

Версия 1.6.0-beta01

19 апреля 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.0-beta01 . Версия 1.6.0-beta01 содержит эти коммиты.

Исправление ошибок

  • Использование postponeEnterTransition с тайм-аутом и последующей заменой отложенного фрагмента больше не приводит к утечке отложенного фрагмента. ( I2ec7d , b/276375110 )
  • Новые обратные вызовы onBackStackChangeStarted и onBackStackChangeCommitted теперь будут отправлять фрагмент только один раз, даже если несколько транзакций содержат один и тот же фрагмент. ( Ic6b69 )

Версия 1.6.0-альфа09

5 апреля 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.0-alpha09 . Версия 1.6.0-alpha09 содержит эти коммиты.

Изменения API

  • DialogFragment теперь предоставляет доступ к базовому ComponentDialog через API requireComponentDialog() . ( I022e3 , b/234274777 )
  • API-интерфейсы фрагментов commitNow() , executePendingTransactions() и popBackStackImmediate() были аннотированы @MainThread , что означает, что теперь они будут выдавать ошибки сборки, если они не вызываются из основного потока, а не будут дожидаться сбоя во время выполнения. ( Ic9665 , b/236538905 )

Исправление ошибок

  • Исправлена ​​ошибка в FragmentManager , из-за которой сохранение и восстановление в одном кадре могло привести к сбою. ( Ib36af , b/246519668 )
  • Обратные вызовы OnBackStackChangedListener onBackStackChangeStarted и onBackStackChangeCommitted теперь выполняются только при изменении обратного стека FragmentManager . ( I66055 , b/274788957 )

Версия 1.6.0-альфа08

22 марта 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.0-alpha08 . Версия 1.6.0-alpha08 содержит эти коммиты.

Изменение поведения

  • Время обратного вызова OnBackStackChangedListener.onBackStackChangeCommited было скорректировано для выполнения до выполнения операций фрагмента. Это гарантирует, что обратный вызов никогда не будет передан фрагменту, который отсоединен. ( I66a76 , b/273568280 )

Исправление ошибок

  • Из Fragment 1.5.6 : Исправлена ​​проблема, при которой вызов clearFragmentResultListener внутри setFragmentResultListener не работал, если Lifecycle уже был STARTED и результат уже был доступен. ( If7458 )

Обновления зависимостей

Версия 1.6.0-альфа07

8 марта 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.0-alpha07 . Версия 1.6.0-alpha07 содержит эти коммиты.

Исправление ошибок

  • Из фрагмента 1.5.6 : исправлена ​​ошибка, из-за которой удаление любого фрагмента, независимо от того, добавлял ли он пункты меню или нет, приводило к аннулированию меню действия. ( 50f098 , b/244336571 )

Версия 1.6.0-альфа06

22 февраля 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.0-alpha06 . Версия 1.6.0-alpha06 содержит эти коммиты.

Изменение поведения

  • Новый обратный вызов onBackStackChangedStarted для onBackStackChangedListener FragmentManager теперь будет выполняться до того, как фрагменты начнут перемещаться в свои целевые состояния. ( I34726 )

Версия 1.6.0-альфа05

8 февраля 2023 г.

Выпущен androidx.fragment:fragment-*:1.6.0-alpha05 . Версия 1.6.0-alpha05 содержит эти коммиты.

Новые возможности

  • Интерфейс FragmentManager.OnBackStackChagnedListener теперь предлагает два дополнительных обратных вызова, onBackStackChangeStarted и onBackStackChangeCommitted , которые позволяют получать дополнительную информацию и управлять изменениями обратного стека в FragmentManager . ( Ib7ce5 , b/238686802 )

Изменения API

  • API-интерфейсы Fragment и FragmentManager , которые принимают Intent или IntentSender , теперь правильно аннотируются с помощью @NonNull , чтобы предотвратить передачу значения null, поскольку значение null всегда немедленно приводило к сбою соответствующих API-интерфейсов Android, которые вызывают эти методы. ( I06fd4 )

Версия 1.6.0-альфа04

7 декабря 2022 г.

Выпущен androidx.fragment:fragment-*:1.6.0-alpha04 . Версия 1.6.0-alpha04 содержит эти коммиты.

Новые возможности

  • FragmentStrictMode добавил новый WrongNestedHierarchyViolation , который определяет, когда дочерний фрагмент вложен в иерархию View своего родительского элемента, но не добавлен в childFragmentManager родительского элемента. ( I72521 , b/249299268 )

Изменения в поведении

  • Фрагменты теперь восстанавливают свое состояние SavedStateRegistry до onAttach() , гарантируя его доступность из всех восходящих методов жизненного цикла. ( I1e2b1 )

Изменения API

  • Артефакт fragment-testing-manifest отделяет записи манифеста от остальных компонентов fragment-testing. Это означает, что вы можете сделать следующее:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

Это позволяет избежать конфликтов из-за разницы версий между fragment-testing и androidx.test . ( I8e534 , b/128612536 )

Исправление ошибок

  • Начиная с версии Fragment 1.5.5 : фрагменты больше не будут неправильно сохранять состояние ViewModel как часть сохраненного состояния реестра представлений. ( I10d2b , b/253546214 )

Версия 1.6.0-альфа03

5 октября 2022 г.

Выпущены androidx.fragment:fragment:1.6.0-alpha03 , androidx.fragment:fragment-ktx:1.6.0-alpha03 и androidx.fragment:fragment-testing:1.6.0-alpha03 . Версия 1.6.0-alpha03 содержит эти коммиты.

Изменения API

  • Классы, расширяющие DialogFragment , теперь должны будут вызывать super в своих переопределениях onDismiss() . ( I14798 , b/238928865 )

Исправление ошибок

  • Исправлены регрессии, вызванные интеграцией новых интерфейсов обратного вызова поставщика ( OnConfigurationChangedProvider , OnMultiWindowModeChangedProvider , OnTrimMemoryProvider , OnPictureInPictureModeChangedProvider ), чтобы гарантировать, что фрагменты всегда получают правильные обратные вызовы. ( I9b380 , I34581 , ( I8dfe6 , b/242570955 ), If9d6b , Id0096 , I690b3 , I2cba2 )

Версия 1.6.0-альфа02

24 августа 2022 г.

Выпущены androidx.fragment:fragment:1.6.0-alpha02 , androidx.fragment:fragment-ktx:1.6.0-alpha02 и androidx.fragment:fragment-testing:1.6.0-alpha02 . Версия 1.6.0-alpha02 содержит эти коммиты.

Исправление ошибок

  • Из фрагмента 1.5.2 : исправлена ​​проблема, из-за которой одновременное выполнение транзакций popBackStack() и replace() могло привести к тому, что существующие фрагменты запускали неправильную Animation / Animator . ( Ib1c07 , b/214835303 )

Версия 1.6.0-альфа01

27 июля 2022 г.

Выпущены androidx.fragment:fragment:1.6.0-alpha01 , androidx.fragment:fragment-ktx:1.6.0-alpha01 и androidx.fragment:fragment-testing:1.6.0-alpha01 . Версия 1.6.0-alpha01 содержит эти коммиты.

Изменения в поведении

  • Сохраненное состояние Fragment было полностью разделено между состоянием частной библиотеки (пользовательские классы Parcelable ) и состоянием, предоставленным разработчиком, которое теперь всегда хранится в Bundle , что позволяет точно определить, откуда берется состояние фрагмента. ( b/207158202 )

Исправление ошибок

  • Из фрагмента 1.5.1 : исправлена ​​регрессия в DialogFragmentCallbacksDetector , из-за которой использование версии lint, связанной с AGP 7.4, приводило к сбою lint. ( b/237567009 )

Обновление зависимости

Версия 1.5

Версия 1.5.7

19 апреля 2023 г.

Выпущены androidx.fragment:fragment:1.5.7 , androidx.fragment:fragment-ktx:1.5.7 и androidx.fragment:fragment-testing:1.5.7 . Версия 1.5.7 содержит эти коммиты.

Исправление ошибок

  • Использование postponeEnterTransition с тайм-аутом и последующей заменой отложенного фрагмента больше не приводит к утечке отложенного фрагмента. ( I2ec7d , b/276375110 )

Версия 1.5.6

22 марта 2023 г.

Выпущены androidx.fragment:fragment:1.5.6 , androidx.fragment:fragment-ktx:1.5.6 и androidx.fragment:fragment-testing:1.5.6 . Версия 1.5.6 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой удаление любого фрагмента, независимо от того, добавлял ли он пункты меню или нет, приводило к аннулированию меню действия. ( 50f098 , b/244336571 )
  • Исправлена ​​ошибка, из-за которой вызов clearFragmentResultListener внутри setFragmentResultListener не работал, если Lifecycle уже был STARTED и результат уже был доступен. ( If7458 )

Версия 1.5.5

7 декабря 2022 г.

Выпущены androidx.fragment:fragment:1.5.5 , androidx.fragment:fragment-ktx:1.5.5 и androidx.fragment:fragment-testing:1.5.5 . Версия 1.5.5 содержит эти коммиты.

Исправление ошибок

  • Фрагменты больше не будут неправильно сохранять состояние ViewModel как часть сохраненного состояния реестра представлений. ( I10d2b , b/253546214 )

Версия 1.5.4

24 октября 2022 г.

Выпущены androidx.fragment:fragment:1.5.4 , androidx.fragment:fragment-ktx:1.5.4 и androidx.fragment:fragment-testing:1.5.4 . Версия 1.5.4 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой использование пользовательского FragmentController с хостом, который не реализует интерфейс обратного вызова поставщика ( OnConfigurationChangedProvider , OnMultiWindowModeChangedProvider , OnTrimMemoryProvider , OnPictureInPictureModeChangedProvider ), и вызов его устаревшей функции диспетчеризации приводили к сбою диспетчеризации дочерних фрагментов. ( I9b380 )

Версия 1.5.3

21 сентября 2022 г.

Выпущены androidx.fragment:fragment:1.5.3 , androidx.fragment:fragment-ktx:1.5.3 и androidx.fragment:fragment-testing:1.5.3 . Версия 1.5.3 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой фрагменты в стеке переходов получали обратные вызовы onMultiWindowModeChanged() , onPictureInPictureModeChanged() , onLowMemory() и onConfigurationChanged() . ( I34581 , I8dfe6 , b/242570955 )
  • Вложенные дочерние фрагменты больше не будут получать несколько обратных вызовов onMultiWindowModeChanged() , onPictureInPictureModeChanged() , onLowMemory() или onConfigurationChanged() . ( I690b3 , Id0096 , If9d6b , I2cba2 )

Версия 1.5.2

10 августа 2022 г.

Выпущены androidx.fragment:fragment:1.5.2 , androidx.fragment:fragment-ktx:1.5.2 и androidx.fragment:fragment-testing:1.5.2 . Версия 1.5.2 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​ошибка, из-за которой одновременное выполнение транзакций popBackStack() и replace() могло привести к тому, что существующие фрагменты запускали неправильную Animation / Animator . ( Ib1c07 , b/214835303 )

Версия 1.5.1

27 июля 2022 г.

Выпущены androidx.fragment:fragment:1.5.1 , androidx.fragment:fragment-ktx:1.5.1 и androidx.fragment:fragment-testing:1.5.1 . Версия 1.5.1 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​регрессия в DialogFragmentCallbacksDetector , из-за которой использование версии lint, связанной с AGP 7.4, приводило к сбою lint. ( b/237567009 )

Обновление зависимости

  • Библиотека фрагментов теперь зависит от Lifecycle 2.5.1 . ( Id204c )
  • Библиотека фрагментов теперь зависит от Activity 1.5.1 . ( I10f07 )

Версия 1.5.0

29 июня 2022 г.

Выпущены androidx.fragment:fragment:1.5.0 , androidx.fragment:fragment-ktx:1.5.0 и androidx.fragment:fragment-testing:1.5.0 . Версия 1.5.0 содержит эти коммиты.

Важные изменения по сравнению с версией 1.4.0

  • Интеграция CreationExtras - Fragment теперь может предоставлять ViewModelProvider.Factory без сохранения состояния через CreationExtras Lifecycle 2.5.0 .
  • Интеграция диалогового окна компонентаDialogFragment теперь использует ComponentDialog через Activity 1.5.0 в качестве диалогового окна по умолчанию, возвращаемого onCreateDialog() .
  • Рефакторинг сохраненного состояния экземпляра — фрагменты начали менять способ сохранения состояния экземпляра. Это попытка помочь четко определить, какое состояние было сохранено во фрагменте и источник состояния. Текущие изменения включают следующее:
    • FragmentManager теперь сохраняет свое сохраненное состояние экземпляра в Bundle , а не напрямую в пользовательском Parcelable .
    • Результаты, установленные через Fragment Result APIs , которые еще не были доставлены, теперь сохраняются отдельно от внутреннего состояния FragmentManager .
    • Состояние, связанное с каждым отдельным фрагментом, теперь сохраняется отдельно от внутреннего состояния FragmentManager , что позволяет сопоставлять объем сохраненного состояния, связанного с отдельным фрагментом, с уникальными идентификаторами, присутствующими в журнале отладки Fragment .

Другие изменения

  • FragmentStrictMode теперь предоставляет возможность частным сторонним фрагментам обходить определенные штрафы за нарушения, используя allowViolation() с именем класса.
  • API фрагментов для предоставления меню в ActionBar вашей активности устарели. API MenuHost и MenuProvider , добавленные в Activity 1.4.0 предоставляют тестируемую, поддерживающую жизненный цикл эквивалентную поверхность API, которую должны использовать фрагменты.

Версия 1.5.0-rc01

11 мая 2022 г.

Выпущены androidx.fragment:fragment:1.5.0-rc01 , androidx.fragment:fragment-ktx:1.5.0-rc01 и androidx.fragment:fragment-testing:1.5.0-rc01 . Версия 1.5.0-rc01 содержит эти коммиты.

Рефакторинг сохраненного состояния экземпляра

  • Состояние, связанное с каждым отдельным фрагментом, теперь сохраняется отдельно от внутреннего состояния FragmentManager , что позволяет сопоставлять объем сохраненного состояния, связанного с отдельным фрагментом, с уникальными идентификаторами, присутствующими в журнале отладки фрагмента . ( a153e0 , b/207158202 )

Версия 1.5.0-beta01

20 апреля 2022 г.

Выпущены androidx.fragment:fragment:1.5.0-beta01 , androidx.fragment:fragment-ktx:1.5.0-beta01 и androidx.fragment:fragment-testing:1.5.0-beta01 . Версия 1.5.0-beta01 содержит эти коммиты.

Изменения API

  • DialogFragment добавил новый метод dismissNow , который использует commitNow для паритета с функцией showNow . Обратите внимание, что это не приведет к немедленному закрытию Dialog , а только синхронно обновит состояние FragmentManager . ( I15c36 , b/72644830 )

Рефакторинг сохраненного состояния экземпляра

  • FragmentManager теперь сохраняет свое сохраненное состояние экземпляра в Bundle , а не напрямую в пользовательском Parcelable . Это первый шаг в обеспечении дополнительной прозрачности того, что на самом деле сохраняется Fragments. ( I93807 , b/207158202 )
  • Результаты, установленные с помощью API -интерфейсов результатов фрагмента , которые еще не были доставлены, теперь сохраняются отдельно от внутреннего состояния FragmentManager . Это позволит получить дополнительную прозрачность в том, что результаты сохраняются как часть вашего сохраненного состояния экземпляра. ( I6ea12 , b/207158202 )

Версия 1.5.0-Alpha05

6 апреля 2022 г.

androidx.fragment:fragment:1.5.0-alpha05 , androidx.fragment:fragment-ktx:1.5.0-alpha05 и androidx.fragment:fragment-testing:1.5.0-alpha05 . Версия 1.5.0-Alpha05 содержит эти коммиты.

Изменения API

  • setHasOptionsMenu() Fragment 's Sethasoptions () устарел. Для управления меню и пунктами меню новые API-интерфейсы меню следует использовать вместо этого в соответствии с фрагментом 1.5.0-alpha04 . ( I7b4b4 , b/226438239 )

Версия 1.5.0-Alpha04

23 марта 2022 г.

androidx.fragment:fragment:1.5.0-alpha04 , androidx.fragment:fragment-ktx:1.5.0-alpha04 и androidx.fragment:fragment-testing:1.5.0-alpha04 . Версия 1.5.0-Alpha04 содержит эти коммиты.

Изменения API

  • Фрагментные API для предоставления меню для ActionBar вашей деятельности устарели, поскольку они тесно соединяют ваш фрагмент с вашей деятельностью и не являются проверенными в изоляции. MenuHost и MenuProvider API, добавленные в действие 1.4.0-alpha01 обеспечивают тестируемую эквивалентную API-поверхность, осведомленную о жизненном цикле, которую должны использовать фрагменты. ( I50a59 , i20758 )

Исправление ошибок

  • SavedStateViewFactory теперь поддерживает использование CreationExtras , даже если он был инициализирован с помощью SavedStateRegistryOwner . Если предоставляются дополнения, инициализированные аргументы игнорируются. ( I6c43b , b/224844583 )

Версия 1.5.0-Alpha03

23 февраля 2022 г.

androidx.fragment:fragment:1.5.0-alpha03 , androidx.fragment:fragment-ktx:1.5.0-alpha03 и androidx.fragment:fragment-testing:1.5.0-alpha03 . Версия 1.5.0-Alpha03 содержит эти коммиты.

Изменения API

  • Теперь вы можете передавать функции CreationExtras в функциях by viewModels() и by activityViewModels() . ( Ibefe7 , b/217601110 )

Изменения в поведении

  • DialogFragment теперь использует ComponentDialog в качестве диалога по умолчанию, возвращаемого onCreateDialog() . ( If3784 , b/217618170 )

Версия 1.5.0-Alpha02

9 февраля 2022 г.

androidx.fragment:fragment:1.5.0-alpha02 , androidx.fragment:fragment-ktx:1.5.0-alpha02 и androidx.fragment:fragment-testing:1.5.0-alpha02 . Версия 1.5.0-Alpha02 содержит эти коммиты.

Новые возможности

  • FragmentStrictMode теперь предлагает возможность частных сторонних фрагментов обходить конкретные штрафы за нарушение с использованием allowViolation() с именем класса. ( I8f678 )

Версия 1.5.0-Alpha01

26 января 2022 г.

androidx.fragment:fragment:1.5.0-alpha01 , androidx.fragment:fragment-ktx:1.5.0-alpha01 и androidx.fragment:fragment-testing:1.5.0-alpha01 . Версия 1.5.0-Alpha01 содержит эти коммиты.

Новые возможности

Исправление ошибок

  • Из фрагмента 1.4.1 : FragmentContainerView больше не выбрасывает незаконное исключение состояния, когда идентификаторы просмотра, сгенерированные из XML, имеют отрицательные значения. ( IC185B , B/213086140 )
  • Из фрагмента 1.4.1 : при использовании пользовательского ownerProducer Lambda с Lazy Function by viewModels() он теперь будет использовать defaultViewModelProviderFactory от этого владельца, если пользовательский ViewModelProvider.Factory не предоставляется вместо того, чтобы всегда использовать фабрику фрагмента. ( I56170 , b/214106513 )
  • Исправлена ​​аварий при первом доступе ViewModel с registerForActivityResult() вызова Fragment . ( IEA2B3 )

Версия 1.4

Версия 1.4.1

26 января 2022 г.

androidx.fragment:fragment:1.4.1 , androidx.fragment:fragment-ktx:1.4.1 и androidx.fragment:fragment-testing:1.4.1 выпускаются. Версия 1.4.1 содержит эти коммиты.

Исправление ошибок

  • FragmentContainerView больше не бросает незаконное исключение состояния, когда идентификаторы просмотра, сгенерированные из XML, имеют отрицательные значения. ( IC185B , B/213086140 )
  • При использовании пользовательского ownerProducer Lambda с помощью Lazy Function by viewModels() он теперь будет использовать defaultViewModelProviderFactory от этого владельца, если пользовательский ViewModelProvider.Factory не предоставляется вместо того, чтобы всегда использовать фабрику фрагмента. ( I56170 , b/214106513 )

Версия 1.4.0

17 ноября 2021 г.

androidx.fragment:fragment:1.4.0 , androidx.fragment:fragment-ktx:1.4.0 , и androidx.fragment:fragment-testing:1.4.0 выпускаются. Версия 1.4.0 содержит эти коммиты.

Важные изменения с 1.3.0

  • API API FragmentStrictMode предоставляют проверки времени выполнения , которые позволяют вам проверить, что ваше приложение или библиотеки, от которых вы зависите, не вызывают устаревших фрагментных API. Когда обнаружено нарушение, вы можете распечатать сообщение журнала, запустить свой собственный слушатель или сбой вашего приложения. FragmentStrictMode.Policy , которая контролирует, что включено проверки, и какие «штрафы» запускаются, может быть установлена ​​на FragmentManager с помощью нового метода setStrictModePolicy() . Эта политика применяется к этому FragmentManager и транзисивно к любым менеджерам по фрагментам детей, которые не устанавливают свою уникальную политику. Смотрите StrictMode для фрагментов .
  • FragmentContainerView теперь предоставляет метод getFragment() , который возвращает фрагмент, который был недавно добавлен в контейнер. Это использует ту же логику, что и findFragmentById() с идентификатором FragmentContainerView , но позволяет цеплять вызов.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentScenario теперь реализует Closeable , позволяя использовать его с помощью метода use Kotlin или Try-with-resources .

  • Добавлен FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} чтобы указать, включить ли стандартную анимацию транспорта активности, взятая из вашей темы в переходе фрагментов.

  • Экспериментальный API FragmentManager.enableNewStateManager(boolean) был удален, и новый менеджер штата теперь является единственным доступным вариантом.

Несколько задних стеков

FragmentManager поддерживает задний стек, состоящий из фрагментных транзакций, в которых использовался addToBackStack() . Это позволяет вам выносить эти транзакции и вернуться в предыдущее состояние, используя механизмы для сохранения состояния с помощью фрагментов , чтобы ваши фрагменты соответствующим образом восстановили свое состояние.

Этот релиз расширяется по этим механизмам, предоставляя три новых API FragmentManager : saveBackStack(String name) , restoreBackStack(String name) и clearBackStack(String name) . Эти API используют то же name , что и addToBackStack() , чтобы спасти состояние FragmentTransaction и состояния каждого фрагмента, который был добавлен в этих транзакциях, и позволяет позже восстановить эти транзакции и их фрагменты с их состоянием в такте. Это позволяет эффективно «обмениваться» между несколькими спинками задними стеками, сохраняя текущий задний стек и восстанавливая сохраненный задний стек.

saveBackStack() работает аналогично popBackStack() тем, что он является асинхронным и приводит к тому, что все фрагментные транзакции обратно к этому конкретному названию будут обращены вспять («opped») и любые дополнительные фрагменты, которые будут уничтожены и удалены, но оно отличается несколькими важными способами:

  • saveBackStack() всегда инклюзивна.
  • В отличие от popBackStack() , который будет выставлять все транзакции в заднем стеке, если указанное имя не найдено в заднем стеке или если предоставлено нулевое имя, saveBackStack() ничего не делает, если вы ранее не совершали фрагментную транзакцию, используя addToBackStack() с этим фактическим, не нулевым именем.
  • Состояние всех фрагментов, добавленных из этих транзакций, сохраняется. Это означает, что сохранение взгляда каждого фрагмента сохраняется, onSaveInstanceState() каждого фрагмента называется и это состояние восстанавливается, и любые экземпляры ViewModel , связанные с этими фрагментами (и onCleared() не требуется).

Фрагментные транзакции, которые можно использовать с saveBackStack() должны соответствовать определенным критериям:

  • Каждая фрагментная транзакция должна использовать setReorderingAllowed(true) чтобы убедиться, что транзакции могут быть восстановлены как единая атомная операция.
  • Набор сохраненных транзакций должен быть автономным (т. Е. Они не должны явно ссылаться на какие-либо фрагменты за пределами этого набора транзакций), чтобы убедиться, что их можно восстановить в любое последнее время, независимо от того, какие изменения были внесены в задний стек в прошлое время.
  • Никаких фрагментов, который сохранен, не может быть сохраненным фрагментом или иметь сохраняемый фрагмент в их переходном наборе фрагментов ребенка, чтобы гарантировать, что FragmentManager не возвращает никаких ссылок на сохраненные фрагменты после сохранения заднего стека.

Подобно saveBackStack() , restoreBackStack() и clearBackStack() , который восстановил ранее сохраненный обратный стек или очистил ранее сохраненный обратный стек, соответственно, оба ничего не делают, если вы ранее не называли saveBackStack() с тем же именем.

Для получения дополнительной информации см. Несколько обратных стеков: глубокое погружение .

Версия 1.4.0-RC01

3 ноября 2021 г.

androidx.fragment:fragment:1.4.0-rc01 выпущенный без изменений из фрагмента 1.4.0-бета01. Версия 1.4.0-RC01 содержит эти коммиты.

Версия 1.4.0-бета01

27 октября 2021 г.

androidx.fragment:fragment:1.4.0-beta01 , androidx.fragment:fragment-ktx:1.4.0-beta01 и androidx.fragment:fragment-testing:1.4.0-beta01 выпускаются. Версия 1.4.0-бета01 содержит эти коммиты.

Исправление ошибок

  • Родительские фрагменты теперь будут отправлять onHiddenChanged() всю свою иерархию, прежде чем запустить свой собственный обратный вызов. ( IEDC20 , B/77504618 )
  • Клавиатура теперь будет автоматически закроется при переходе от фрагмента с открытой клавиатурой к фрагменту с обзором утилизации. ( I8B842 , B/196852211 )
  • DialogFragment теперь использует setReorderingAllowed(true) для всех транзакций, которые он создает, когда вы называете show() , showNow() или dismiss() . ( IE2C14 )
  • Чрезвычайно длинное предупреждение о локве о DetachAndAttachFragmentInSameFragmentTransaction было сокращено до DetachAndAttachSameFragment . ( E9ECA3 )

Версия 1.4.0-Альфа10

29 сентября 2021 г.

androidx.fragment:fragment:1.4.0-alpha10 , androidx.fragment:fragment-ktx:1.4.0-alpha10 и androidx.fragment:fragment-testing:1.4.0-alpha10 . Версия 1.4.0-Alpha10 содержит эти коммиты.

Ворс

  • Добавлено предупреждение о предоставлении DetachAndAttachFragmentInSameFragmentTransaction для обнаружения вызова как detach() , так и attach() на одном и том же Fragment в одном и том же FragmentTransaction - поскольку эти дополнительные операции отменяют друг друга, когда они выполняют в одной и той же транзакции, они должны быть разделены на отдельные транзакции, чтобы сделать что -либо. ( AOSP/1832956 , B/200867930 )
  • Добавлена ​​ошибка FragmentAddMenuProvider для коррекции использования жизненного цикла фрагмента в жизненный цикл вида фрагмента при использовании API addMenuProvider MenuHost . ( AOSP/1830457 , B/200326272 )

Обновления документации

  • Сообщение об испаке для API, которые теперь обрабатывают API -интерфейсы результатов деятельности , а именно startActivityForResult , startIntentSenderForResult , onActivityResult , requestPermissions и onRequestPermissionsResult , все были расширены с более подробной информацией. ( CCE80F )
  • Сообщение об испаке для onActivityCreated() как для Fragment , так и DialogFragment было расширено с помощью более подробной информации. ( 224DB4 )

Версия 1.4.0-Alpha09

15 сентября 2021 г.

androidx.fragment:fragment:1.4.0-alpha09 , androidx.fragment:fragment-ktx:1.4.0-alpha09 и androidx.fragment:fragment-testing:1.4.0-alpha09 . Версия 1.4.0-Alpha09 содержит эти коммиты.

Новые возможности

  • Теперь вы можете позвонить в clearBackStack(name) , чтобы очистить любое состояние, ранее сохраненное с помощью saveBackStack(name) . ( I70cd7 )

Изменения API

  • Класс FragmentContainerView был переписан в Kotlin, гарантируя, что функция getFragment будет должным образом уважать нулясь. ( If694a , b/189629145 )
  • FragmentStrictMode теперь написан в Kotlin ( I11767 , B/199183506 )

Исправление ошибок

  • Исправлена ​​проблема, в которой состояние фрагмента, которое было добавлено с помощью setReorderingAllowed(true) , а затем немедленно удалено до выполнения ожидающих транзакций, не будет должным образом очищено. ( I8ccb8 )

Версия 1.4.0-Alpha08

1 сентября 2021 г.

androidx.fragment:fragment:1.4.0-alpha08 , androidx.fragment:fragment-ktx:1.4.0-alpha08 и androidx.fragment:fragment-testing:1.4.0-alpha08 . Версия 1.4.0-Alpha08 содержит эти коммиты.

Исправление ошибок

  • Улучшено чек для Lint UseRequireInsteadOfGet , чтобы лучше справиться с избыточным скобком. ( I2d865 )
  • Улучшении проверки Lint UseGetLayoutInflater для обработки дополнительных краев. ( IE5423 )

Версия 1.4.0-Alpha07

18 августа 2021 г.

androidx.fragment:fragment:1.4.0-alpha07 , androidx.fragment:fragment-ktx:1.4.0-alpha07 и androidx.fragment:fragment-testing:1.4.0-alpha07 высвобождаются без заметных изменений. Версия 1.4.0-Alpha07 содержит эти коммиты.

Версия 1.4.0-Alpha06

4 августа 2021 г.

androidx.fragment:fragment:1.4.0-alpha06 , androidx.fragment:fragment-ktx:1.4.0-alpha06 и androidx.fragment:fragment-testing:1.4.0-alpha06 . Версия 1.4.0-Alpha06 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​проблема с несколькими спинками, когда быстро обменивается между спинками, которые появляются в виде IllegalStateException при восстановлении FragmentTransaction или в качестве второй копии появляющегося фрагмента. ( I9039f )
  • Исправлена ​​проблема, в которой FragmentManager будет держать копию состояния, ранее сохранившуюся через saveBackStack() даже после восстановления этого состояния. ( IED212 )
  • Метод dismissAllowingStateLoss() DialogFragment больше не сбои, когда вы называете его после того, как состояние сохраняется при конкретном добавлении диалога с помощью метода show(FragmentTransaction, String) . ( I84422 )

Версия 1.4.0-Alpha05

21 июля 2021 г.

androidx.fragment:fragment:1.4.0-alpha05 , androidx.fragment:fragment-ktx:1.4.0-alpha05 и androidx.fragment:fragment-testing:1.4.0-alpha05 . Версия 1.4.0-Alpha05 содержит эти коммиты.

Исправление ошибок

  • Из фрагмента 1.3.6 : представление фрагмента теперь правильно установлено, чтобы GONE при использовании hide() , когда у корневого представления есть установка transitionGroup=”true” . ( AOSP/1766655 , B/193603427 )
  • Из фрагмента 1.3.6 : FragmentActivity теперь всегда открывает сохраненное состояние в качестве первой операции в обратных вызовах жизненного цикла. ( I6db7a )

Обновление зависимости

Версия 1.4.0-Alpha04

30 июня 2021 г.

androidx.fragment:fragment:1.4.0-alpha04 , androidx.fragment:fragment-ktx:1.4.0-alpha04 и androidx.fragment:fragment-testing:1.4.0-alpha04 . Версия 1.4.0-Alpha04 содержит эти коммиты.

Изменения API

  • FragmentManager теперь использует SavedStateRegistry под капюшоном, чтобы спасти свое состояние. Методы saveAllState() и restoreSavedState() также устарели в FragmentController . Если вы используете FragmentController для фрагментов размещения за пределами FragmentActivity , вы должны иметь свои FragmentHostCallbacks в реализации SavedStateRegistryOwner . ( IBA68E , B/188734238 )

Исправление ошибок

  • Исправлена ​​проблема, в которой вызов saveBackStack() как часть поддержки нескольких обратных стеков потерпит неудачу, если это будет выполнено в то же время, что и запуск FragmentTransaction , который использовал replace() . ( I73137 )
  • Исправлена NullPointerException , которое произошло бы после вручную восстановив сохраненный задний стек, который содержал несколько транзакций при использовании API restoreBackStack() для нескольких поддержки заднего стека. Это также исправило проблему, в которой setReorderingAllowed(true) не проверялась на все транзакции. ( I8c593 )
  • Исправлена ​​проблема, в которой FragmentManager неправильно продолжит восстанавливать ранее сохраненные состояния фрагментов даже после того, как эти фрагменты были удалены из FragmentManager , что привело к постоянному растущему состоянию сохраненное состояние. ( I1fb8e )

Версия 1.4.0-Alpha03

16 июня 2021 г.

androidx.fragment:fragment:1.4.0-alpha03 , androidx.fragment:fragment-ktx:1.4.0-alpha03 и androidx.fragment:fragment-testing:1.4.0-alpha03 . Версия 1.4.0-Alpha03 содержит эти коммиты.

Новые возможности

  • Все классы Violation строительства фрагмента были обновлены с помощью более подробных сообщений об ошибках, которые объясняют детали нарушения. ( B/187871638 )
    • FragmentTagUsageViolation теперь содержит более подробное сообщение об ошибке, которое контейнер родительский контейнер, в который был бы добавлен фрагмент. ( IC33A7 )
    • WrongFragmentContainerViolation в котором теперь есть более подробное сообщение об ошибке, которое включает в себя контейнер, в который был добавлен фрагмент. ( IB55F8 )
    • Классы вариантов использования для TargetFragmentUsageViolation теперь имеют более подробные сообщения об ошибках, чтобы включить фрагмент, вызывающий нарушение и любую другую содержащуюся информацию. ( ICC6AC )
    • Классы, расширяющие RetainInstanceUsageViolation теперь имеют более подробные сообщения об ошибках, которые включают фрагмент, вызывающий нарушение. ( I6bd55 )
    • FragmentReuseViolation теперь имеет более подробное сообщение об ошибке, которое включает в себя предыдущий идентификатор фрагмента. ( I28ce2 )
    • SetUserVisibleHintViolation теперь имеет более подробное сообщение об ошибке, которое включает в себя то, на что подсказывается видимый намек пользователя. ( IB2D5F )

Изменения в поведении

  • Отменил ограничение на вызов fitsSystemWindows на FragmentContainerView - это больше не сбояет ваше приложение. ( 6B8DDD , B/190622202 )

Исправление ошибок

  • Из фрагмента 1.3.5 : фиксирована регрессия в общих переходах элементов, представленных в фрагменте 1.3.4 AOSP/1679887 . Фрагменты теперь правильно обрабатывают группы переходов (либо установленные непосредственно через transitionGroup="true" , либо косвенно через имя transitionName или background ), и общие элементы больше не будут бросать IndexOutOfBoundsException s. ( I16484 , B/188679569 , B/188969304 )
  • FragmentManager больше не будет разбиться, когда вы попытаетесь скрыть фрагмент снятия. ( I573dd , b/183634730 )
  • Проверка Lint OnCreateDialogIncorrectCallback больше не будет сбой при оценке переменной верхнего уровня. ( 0A9EFA , B/189967522 )

Версия 1.4.0-Alpha02

2 июня 2021 г.

androidx.fragment:fragment:1.4.0-alpha02 , androidx.fragment:fragment-ktx:1.4.0-alpha02 и androidx.fragment:fragment-testing:1.4.0-alpha02 . Версия 1.4.0-Alpha02 содержит эти коммиты.

Новые возможности

  • FragmentStrictMode теперь всегда будет регистрировать нарушения, когда регистрация будет включена через FragmentManager , независимо от текущей политики строгого режима. ( I02DF6 , B/187872638 )
  • FragmentStrictMode теперь поддерживает освобождение определенных классов Fragment от строгого Violation режима, что позволяет этому классу обходить любые штрафы. ( IB4E5D , B/184786736 )

  • Класс Violation FragmentStrictMode был расширен для добавления структурной информации на основе каждого нарушения. Это позволяет вам точно проверить, что вызвало нарушение наряду с нарушением фрагмента ( IF5118 , B/187871150 ), каждое Violation содержит следующее:

    • WrongFragmentContainerViolation в настоящее время содержит группу ViewGroup , которую пытался добавить Fragment . ( I83C75 , B/187871150 )
    • TargetFragmentUsageViolation была расширена в, SetTargetFragmentUsageViolation , GetTargetFragmentUsageViolation и GetTargetFragmentRequestCodeUsageViolation , с SetTargetFragmentUsageViolation , содержащим фрагмент цели и код запроса. ( I741b4 , b/187871150 )
    • SetUserVisibleHintViolation теперь содержит логическое значение, переданное в setUserVisibleHint() . ( I00585 , B/187871150 )
    • FragmentTagUsageViolation теперь содержит группу просмотров, что тег <fragment> пытался раздуть фрагмент. ( I5dbbc , b/187871150 )
    • FragmentReuseViolation теперь содержит уникальный идентификатор предыдущего экземпляра Fragment , который вызвал VIOTION. ( I0544D , B/187871150 )
    • RetainInstanceUsageViolation в настоящее время абстрактно и имеет два подкласса: SetRetainInstanceUsageViolation и GetRetainInstanceUsageViolation , представляющие два случая для типа нарушения. ( IC81E5 , B/187871150 )

Изменения в поведении

  • FragmentContainerView теперь бросает исключение при попытке изменить атрибут fitsSystemWindow программно или через XML. Вставки должны обрабатывать мнение каждого отдельного фрагмента. ( IE6651 , B/187304502 )

Версия 1.4.0-Alpha01

18 мая 2021 г.

androidx.fragment:fragment:1.4.0-alpha01 , androidx.fragment:fragment-ktx:1.4.0-alpha01 и androidx.fragment:fragment-testing:1.4.0-alpha01 . Версия 1.4.0-Alpha01 содержит эти коммиты.

Новые возможности

  • FragmentContainerView теперь предоставляет метод getFragment() , который возвращает фрагмент, который был недавно добавлен в контейнер. Это использует ту же логику, что и findFragmentById() с идентификатором FragmentContainerView , но позволяет цеплять вызов. ( IFE17A , B/162527857 )

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • Добавлен FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} чтобы указать, включить ли стандартную анимацию транспорта активности, взятая из вашей темы в переходе фрагментов. ( I46652 )

Несколько задних стеков

FragmentManager поддерживает задний стек, состоящий из фрагментных транзакций, в которых использовался addToBackStack() . Это позволяет вам выносить эти транзакции и вернуться в предыдущее состояние, используя механизмы для сохранения состояния с помощью фрагментов , чтобы ваши фрагменты соответствующим образом восстановили свое состояние.

Этот релиз расширяется по этим механизмам, предоставляя два новых API FragmentManager : saveBackStack(String name) и restoreBackStack(String name) . Эти API используют то же name , что и addToBackStack() чтобы спасти состояние FragmentTransaction и состояния каждого фрагмента, который был добавлен в этих транзакциях, и позволяет позже восстановить эти транзакции и их фрагменты с их состоянием в такте. Это позволяет эффективно «обмениваться» между несколькими спинками задними стеками, сохраняя текущий задний стек и восстанавливая сохраненный задний стек.

saveBackStack() работает аналогично popBackStack() тем, что он является асинхронным и приводит к тому, что все фрагментные транзакции обратно к этому конкретному названию будут обращены вспять («opped») и любые дополнительные фрагменты, которые будут уничтожены и удалены, но оно отличается несколькими важными способами:

  • saveBackStack() всегда инклюзивна.
  • В отличие от popBackStack() , который будет выставлять все транзакции в заднем стеке, если указанное имя не найдено в заднем стеке или если предоставлено нулевое имя, saveBackStack() ничего не делает, если вы ранее не совершали фрагментную транзакцию, используя addToBackStack() с этим фактическим, не нулевым именем.
  • Состояние всех фрагментов, добавленных из этих транзакций, сохраняется. Это означает, что сохранение взгляда каждого фрагмента сохраняется, onSaveInstanceState() каждого фрагмента называется и это состояние восстанавливается, и любые экземпляры ViewModel , связанные с этими фрагментами (и onCleared() не требуется).

Фрагментные транзакции, которые можно использовать с saveBackStack() должны соответствовать определенным критериям:

  • Каждая фрагментная транзакция должна использовать setReorderingAllowed(true) чтобы убедиться, что транзакции могут быть восстановлены как единая атомная операция.
  • Набор сохраненных транзакций должен быть автономным (т. Е. Они не должны явно ссылаться на какие-либо фрагменты за пределами этого набора транзакций), чтобы убедиться, что их можно восстановить в любое последнее время, независимо от того, какие изменения были внесены в задний стек в прошлое время.
  • Никаких фрагментов, который сохранен, не может быть сохраненным фрагментом или иметь сохраняемый фрагмент в их переходном наборе фрагментов ребенка, чтобы гарантировать, что FragmentManager не возвращает никаких ссылок на сохраненные фрагменты после сохранения заднего стека.

Подобно saveBackStack() , restoreBackStack() ничего не делает, если вы ранее не называли saveBackStack() с тем же именем. ( B/80029773 )

Фрагмент строгого мода

API API FragmentStrictMode предоставляют проверки времени выполнения , которые позволяют вам проверить, что ваше приложение или библиотеки, от которых вы зависите, не вызывают устаревших фрагментных API. Когда обнаружено нарушение, вы можете распечатать сообщение журнала, запустить свой собственный слушатель или сбой вашего приложения. FragmentStrictMode.Policy , которая контролирует, что включено проверки, и какие «штрафы» запускаются, может быть установлена ​​на FragmentManager с помощью нового метода setStrictModePolicy() . Эта политика применяется к этому FragmentManager и транзисивно к любым менеджерам по фрагментам детей, которые не устанавливают свою уникальную политику. ( #123 , #131 , #150 , b/143774122 )

  • detectFragmentReuse() обнаруживает, переосмысливается ли ранее удаленный экземпляр Fragment в FragmentManager . Вы никогда не должны взаимодействовать или сохранять ссылку на экземпляр Fragment после того, как он был уничтожен и удален из FragmentManager . ( #142 , b/153738653 )
  • detectFragmentTagUsage() обнаруживает, когда вы используете тег <fragment> в вашем макете XML. Вы всегда должны использовать FragmentContainerView при надувании фрагментов как часть вашего макета. ( #141 , b/153738235 )
  • detectWrongFragmentContainer() обнаруживает при добавлении фрагмента в контейнер, который не является FragmentContainerView . Вы всегда должны использовать FragmentContainerView в качестве контейнера для фрагментов в вашем макете. ( #146 , b/181137036 )
  • detectRetainInstanceUsage() обнаруживает при использовании API API -интерфейса setRetainInstance() или getRetainInstance() . ( #140 , b/153737954 )
  • detectSetUserVisibleHint() обнаруживает при использовании устаревшего API setUserVisibleHint() . ( #136 , b/153738974 )
  • detectTargetFragmentUsage() обнаруживает при использовании устаревшего setTargetFragment() , getTargetFragment() или getTargetRequestCode() . ( #139 , b/153737745 )

Изменения API

  • Экспериментальный API FragmentManager.enableNewStateManager(boolean) был удален, и новый менеджер штата теперь является единственным доступным вариантом. ( I90036 , B/162776418 )
  • FragmentScenario теперь реализует Closeable , позволяя использовать его с помощью метода use Kotlin или Try-with-resources . ( #121 , b/143774122 )

Новые чеки на ворс

  • Проверка Lint UseGetLayoutInflater Lint теперь предупреждает при использовании LayoutInflater.from(Context) в DialogFragment фрагменте - вы всегда должны использовать метод getLayoutInflater() , чтобы получить соответствующий для LayoutInflater . ( #156 , b/170781346 )
  • Проверка Lint DialogFragmentCallbacksDetector теперь предупреждает при вызове метода setOnCancelListener или setOnDismissListener в методе DialogFragment onCreateDialog() - эти слушатели принадлежат самим DialogFragment , и вы должны переопределить onCancel() и onDismiss() , чтобы получить эти вызовы. ( #171 , b/181780047 , b/187524311 )

Исправление ошибок

  • Из фрагмента 1.3.4 : Исправлена ​​регрессия, введенная в фрагменте 1.3.3 при использовании API ViewTreeViewModelStoreOwner.get() с ViewModelProvider или JetPack Compose Method of viewModel() внутри фрагмента. Эти варианты использования теперь правильно используют ViewModelProvider.Factory , предоставляемый вашим фрагментом, если он переопределяет getDefaultViewModelProviderFactory() (как это делают аннотированные фрагменты @AndroidEntryPoint при использовании рук). Если вы не переопределяете этот метод, SavedStateViewModelFactory , который сохраняет и восстанавливает свое состояние наряду с представлением фрагмента, создается как фабрика по умолчанию. ( I5CBFA , B/186097368 )
  • Из фрагмента 1.3.4 : при использовании FragmentContainerView на API 29 вставки больше не будут отправляться на неопределенный срок, исправляя проблемы с примерами BottomNavigationBar и FloatingActionButton . ( I1BB78 , B/186012452 )
  • Из фрагмента 1.3.4 : теперь вы можете получить свой посылок из пакета результатов фрагмента после смерти процесса. ( I65932 , B/1874443158 )
  • Из фрагмента 1.3.4 : при выполнении перехода общего элемента на группе просмотра, если группа Views имеет transitionGroup установленную на FALSE, теперь она будет должным образом переходить. ( I99675 )

Внешний вклад

Версия 1.3

Версия 1.3.6

21 июля 2021 г.

androidx.fragment:fragment:1.3.6 , androidx.fragment:fragment-ktx:1.3.6 и androidx.fragment:fragment-testing:1.3.6 выпускаются. Версия 1.3.6 содержит эти коммиты.

Исправление ошибок

  • Из фрагмента 1.4.0-alpha03 : FragmentManager больше не будет терпеть крах, когда вы попытаетесь скрыть снятие фрагмента. ( I573dd , b/183634730 )
  • Взгляд фрагмента теперь правильно настроен на то, GONE при использовании hide() , когда у корневого представления есть установка transitionGroup=”true” . ( AOSP/1766655 , B/193603427 )
  • FragmentActivity теперь всегда открывает сохраненное состояние в качестве первой операции в обратном вызове жизненного цикла, которое он переопределяет. ( I6db7a )

Обновление зависимости

Версия 1.3.5

16 июня 2021 г.

androidx.fragment:fragment:1.3.5 , androidx.fragment:fragment-ktx:1.3.5 , и androidx.fragment:fragment-testing:1.3.5 выпускаются. Версия 1.3.5 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​регрессия в общих элементных переходах, введенных в фрагмент 1.3.4 AOSP/1679887 . Фрагменты теперь правильно обрабатывают группы переходов (либо установленные непосредственно через transitionGroup="true" , либо косвенно через имя transitionName или background ), и общие элементы больше не будут бросать IndexOutOfBoundsException s. ( I16484 , B/188679569 , B/188969304 )

Версия 1.3.4

18 мая 2021 г.

androidx.fragment:fragment:1.3.4 , androidx.fragment:fragment-ktx:1.3.4 , и androidx.fragment:fragment-testing:1.3.4 выпускаются. Версия 1.3.4 содержит эти коммиты.

Исправление ошибок

  • Исправлена ​​регрессия, введенная в фрагменте 1.3.3 при использовании API ViewTreeViewModelStoreOwner.get() с ViewModelProvider или JetPack Compose Method of viewModel() внутри фрагмента при использовании рукояти. Эти варианты использования теперь правильно используют ViewModelProvider.Factory , предоставляемый вашим фрагментом, если он переопределяет getDefaultViewModelProviderFactory() (как это делают аннотированные фрагменты @AndroidEntryPoint ). Если вы не переопределяете этот метод, SavedStateViewModelFactory , который сохраняет и восстанавливает свое состояние наряду с представлением фрагмента, создается как фабрика по умолчанию. ( I5CBFA , B/186097368 )
  • При использовании FragmentContainerView на API 29 вставки больше не будут отправляться на неопределенный срок, исправляя проблемы с помощью экземпляров BottomNavigationBar и FloatingActionButton . ( I1BB78 , B/186012452 )
  • Теперь вы можете получить свой посылок из пакета результатов фрагмента после смерти процесса. ( I65932 , B/1874443158 )
  • При выполнении перехода общего элемента на группе просмотра, если группа Views имеет transitionGroup установленную на False, теперь она будет правильно переходить. ( I99675 )

Версия 1.3.3

21 апреля 2021 г.

androidx.fragment:fragment:1.3.3 , androidx.fragment:fragment-ktx:1.3.3 , и androidx.fragment:fragment-testing:1.3.3 выпускаются. Версия 1.3.3 содержит эти коммиты.

Новые возможности

  • Использование SavedStateViewModelFactory теперь работает при использовании с SavedStateRegistryOwner , возвращенным с использованием ViewTreeSavedStateRegistryOwner.get() с представлением фрагмента. ( I21acf , b/181577191 )

Исправление ошибок

  • Исправлена ​​регрессия, представленная в фрагменте 1.3.2 , которая приведет к тому, что анимации popEnter не работают при выпуске FragmentTransaction , которая включала операцию setPrimaryNavFragment , такую ​​как те, которые используются NavHostFragment . ( I38C87 , B/183877426 )
  • FragmentContainerView теперь гарантирует, что каждый Fragment отправляет новый набор WindowInsets , гарантируя, что каждый фрагмент теперь может независимо употреблять вставки. ( I63F68 , B/172153900 )
  • DialogFragment теперь должным образом обрабатывает случаи, когда фрагмент ребенка добавляется в контейнер, который имеет тот же идентификатор, что и контейнер в вашем пользовательском классе Dialog , исправляя проблемы иерархии просмотра при повторном использовании идентификаторов, которые используются внутри, такие диалоги, как BottomSheetDialog . ( IE6279 , B/180021387 )
  • FragmentManager.dump() теперь правильно отступает первый фрагмент в списке активных фрагментов. ( IF5C33 , B/183705451 )

Новые исправления ошибок штата менеджер

  • Новый менеджер Fragment State теперь правильно обрабатывает переходы выхода с операциями скрытия. ( I9e4de , b/184830265 )

Версия 1.3.2

24 марта 2021 г.

androidx.fragment:fragment:1.3.2 , androidx.fragment:fragment-ktx:1.3.2 , и androidx.fragment:fragment-testing:1.3.2 выпускаются. Версия 1.3.2 содержит эти коммиты.

Новые исправления ошибок штата менеджер

  • При выполнении операций popBackStack() и commit() , последняя операция теперь установит направление для всех анимаций, а не запустить некоторые поп -анимации, а некоторые введены анимации. ( I7072E , B/181142246 )
  • Views within in a shared element hierarchy will no longer have their transition name cleared when doing a shared element transition. ( I4d4a6 , b/179934757 )

Обновления зависимостей

  • Fragment now depends on Activity 1.2.2 , fixing an issue with Activity's InvalidFragmentVersionForActivityResult lint check when using Fragment 1.3.1 or higher.
  • Fragment now depends on Lifecycle 2.3.1 .

Версия 1.3.1

10 марта 2021 г.

androidx.fragment:fragment:1.3.1 , androidx.fragment:fragment-ktx:1.3.1 , and androidx.fragment:fragment-testing:1.3.1 are released. Version 1.3.1 contains these commits.

Новые возможности

  • Dialogs within a DialogFragment can now get access to ViewTree owners through their DecorView, ensuring that DialogFragment can be used with ComposeView . ( Ib9290 , b/180691023 )

Исправление ошибок

  • Fragments inflated into an already RESUMED activity using FragmentContainerView are now properly shown after a configuration change. ( Ie14c8 , b/180538371 )
  • There is no longer an extra } at the end of the fragment toString() ( I54705 , b/177761088 )
  • Overridden methods in FragmentActivity now properly inherit the base method javaDoc ( I736ce , b/139548782 )
  • The docs for setFragmentResult and setFragmentResultListener have updated their parameters docs to reflect that they no longer accept nullables ( I990ba , b/178348386 )

New State Manager Bug Fixes

  • Fixed a memory leak in fragments caused by mFocusedView ( Ib4e9e , b/179925887 )
  • Fragments now properly call onCreateOptionsMenu when using show/hide transactions ( I8bce8 , b/180255554 )
  • Child fragments with transitions that start prior to the fragment being laid out will now properly reach RESUMED ( Ic11e6 , b/180825150 )
  • Fragments inflated using the <fragment> tag will now always make it to RESUMED ( I452ac , ( I9fa49 )

Обновления зависимостей

Версия 1.3.0

10 февраля 2021 г.

androidx.fragment:fragment:1.3.0 , androidx.fragment:fragment-ktx:1.3.0 , and androidx.fragment:fragment-testing:1.3.0 are released. Version 1.3.0 contains these commits.

Major changes since 1.2.0

  • New State Manager : A significant rewrite of the internals of FragmentManager has fixed numerous issues around the dispatch of lifecycle events, animations and transitions, and how postponed fragments are handled.
  • Activity Result API Integration : Added support for the ActivityResultRegistry API introduced in Activity 1.2.0 to handle startActivityForResult() + onActivityResult() as well as requestPermissions() + onRequestPermissionsResult() flows without overriding methods in your Fragment in addition to providing hooks for testing these flows. See the updated Getting a Result from an Activity .

    • This release fixes a number of issues around invalid request codes and the dispatch of permission requests that prevent the Activity Result API from working on previous versions of FragmentActivity . You must upgrade to Fragment 1.3.0 to use the Activity Result APIs in a FragmentActivity or AppCompatActivity .
  • Fragment Result API : Added support for passing results between two Fragments via new APIs on FragmentManager . This works for hierarchy fragments (parent/child), DialogFragments, and fragments in Navigation and ensures that results are only sent to your Fragment while it is at least STARTED . The target fragment APIs have been deprecated in favor of these new APIs. See Get Results using the Fragment Result API .

  • FragmentOnAttachListener : The onAttachFragment() callback on FragmentActivity and Fragment have been deprecated. A new FragmentOnAttachListener has been added to provide a more flexible alternative, allowing delegation of onAttachFragment() to separate, testable listeners and support for adding a listener to FragmentManagers other than your direct child FragmentManager.

  • FragmentScenario Improvements : The FragmentScenario class from the fragment-testing artifact has been rewritten in Kotlin and has received a number of improvements:

    • FragmentScenario now uses setMaxLifecycle() to implement moveToState() , ensuring consistent behavior on all API levels and decoupling the Fragment's state from the underlying Activity.
    • FragmentScenario now supports setting an initial Lifecycle.State to support asserting the fragment's state before moving to each Lifecycle.State for the first time.
    • There is now an alternative to the FragmentScenario API of onFragment in the form of the Kotlin reified extension method withFragment that allows you to return a value. Notably, it rethrows exceptions raised in the given block.
  • ViewTree Support : Fragment now supports the ViewTreeLifecycleOwner.get(View) , ViewTreeViewModelStoreOwner.get(View) , and ViewTreeSavedStateRegistryOwner APIs added in Lifecycle 2.3.0 and SavedState 1.1.0 such that it will return the Fragment as the ViewModelStoreOwner , and a SavedStateRegistryOwner and LifecycleOwner tied to the fragment's view Lifecycle when using a View within a Fragment .

  • TRANSIT_ animation changes : The fragment default effects, TRANSIT_FRAGMENT_OPEN , TRANSIT_FRAGMENT_CLOSE , and TRANSIT_FRAGMENT_FADE , now use Animator instead of Animation . The resources used to build these animators are now private.

  • setRetainInstance() deprecation : The setRetainInstance() method on Fragments has been deprecated. With the introduction of ViewModels , developers have a specific API for retaining state that can be associated with Activities, Fragments, and Navigation graphs. This allows developers to use a normal, not retained Fragment and keep the specific state they want retained separate, avoiding a common source of leaks while maintaining the useful properties of a single creation and destruction of the retained state (namely, the constructor of the ViewModel and the onCleared() callback it receives).

  • ViewPager 1 adapter deprecation : With the release of ViewPager2 1.0.0 , the FragmentPagerAdapter and FragmentStatePagerAdapter classes for interacting with ViewPager have been deprecated. See Migrate from ViewPager to ViewPager2 .

Version 1.3.0-rc02

27 января 2021 г.

androidx.fragment:fragment:1.3.0-rc02 , androidx.fragment:fragment-ktx:1.3.0-rc02 , and androidx.fragment:fragment-testing:1.3.0-rc02 are released. Version 1.3.0-rc02 contains these commits.

Исправление ошибок

  • Fixed an issue where a parent DialogFragment would appear above a child DialogFragment after a configuration change; child dialog fragments now always appear above a parent dialog fragment. ( I30806 , b/177439520 )
  • Fixed issue where doing a hide operation with an Animation would cause the hiding fragment to flash at the end of the animation. ( I57e22 , b/175417675 )
  • Fragments with transitions added before the view hierarchy is attached now properly reach RESUMED . ( I1fc1d , b/177154873 )

New State Manager Bug Fixes

  • The Fragment's view Lifecycle now properly handles cases where the Fragment's view is destroyed before the Lifecycle reaches CREATED , avoiding exceptions stating “no event down from INITIALIZED”. ( eda2bd , b/176138645 )
  • Fragments that use an Animator now appear in the proper order when using FragmentContainerView . ( Id9aa3 , b/176089197 )

Version 1.3.0-rc01

16 декабря 2020 г.

androidx.fragment:fragment:1.3.0-rc01 , androidx.fragment:fragment-ktx:1.3.0-rc01 , and androidx.fragment:fragment-testing:1.3.0-rc01 are released. Version 1.3.0-rc01 contains these commits.

Исправление ошибок

  • onPrepareOptionsMenu() now follows the same logic as onCreateOptionsMenu() and is no longer called when a parent fragment calls setMenuVisibility(false) . ( Id7de8 , b/173203654 )

New State Manager Bug Fixes

  • Fixed leak and visual artifact when adding a fragment with an Animation to a FragmentContainerView and then interrupting that addition with a pop operation. ( I952d8 )
  • Fixed an issue where the fragment's view would remain in the view hierarchy if it was replaced during its onCreate() or onViewCreated() methods. ( I8a7d5 )
  • Focus is now properly restored to Fragment root views when they are resumed. ( Ifc84b )
  • Combining pop and replace operations in the same fragment transaction will now show the proper animations ( Ifd4e4 , b/170328691 )

Version 1.3.0-beta02

2 декабря 2020 г.

androidx.fragment:fragment:1.3.0-beta02 , androidx.fragment:fragment-ktx:1.3.0-beta02 , and androidx.fragment:fragment-testing:1.3.0-beta02 are released. Version 1.3.0-beta02 contains these commits.

Новые возможности

  • FragmentScenario has been fully converted to Kotlin while maintaining source and binary compatibility via usage of Kotlin 1.4's functional interfaces for FragmentAction . ( I19d31 )

Изменения в поведении

  • FragmentContainerViews that do not inflate a fragment using the class or android:name attribute can now be used outside of a FragmentActivity . ( Id4397 , b/172266337 )
  • Attempting to set the max lifecycle of a fragment to DESTROYED will now throw an IllegalArgumentException ( Ie7651 , b/170765622 )
  • Initializing a FragmentScenario with a DESTROYED state will now throw an IllegalArgumentException ( I73590 , b/170765622 )

New State Manager Bug Fixes

  • Fixed an issue where the view would not reach its final state if you interrupt a fragment transition that was using an Animator or one of the TRANSIT_FRAGMENT_ options. ( I92426 , b/169874632 )
  • Fixed an issue that prevented fragments with an exiting Animation from being properly destroyed. ( I83d65 )
  • Exiting fragments that have their effects reversed now correctly cancel and restart with the proper entering effect. ( I62226 , b/167092035 )
  • Fixed an issue where the exit Animator of a hide() would not run. ( Id7ffe )
  • Fragments now properly appear when postponed and then immediately started. ( Ie713b , b/170022857 )
  • Fragments that remove their focused view during an animation will no longer attempt to restore the focus on the detached view once they reach RESUMED ( I38c65 , b/172925703 )

Внешний вклад

  • FragmentFactory now caches fragment classes separately for different ClassLoader instances. Thanks Simon Schiller! ( #87 , b/113886460 )

Version 1.3.0-beta01

1 октября 2020 г.

androidx.fragment:fragment:1.3.0-beta01 , androidx.fragment:fragment-ktx:1.3.0-beta01 , and androidx.fragment:fragment-testing:1.3.0-beta01 are released. Version 1.3.0-beta01 contains these commits.

Новые возможности

  • setMaxLifecycle() now supports setting the Lifecycle state to INITIALIZING as long as the fragment has not been moved to CREATED . ( b/159662173 )

Изменения API

Изменения в поведении

  • Fragment resource files have been correctly made private. ( aosp/1425237 )

Исправление ошибок

  • Fragments inflated using the <fragment> tag will now properly wait until their views are added to a container before moving to STARTED ( I02f4c )
  • Fragments that are visible and then setMaxLifecycle() to CREATED now properly run their exit effects. ( b/165822335 )
  • Removing a detached fragment that is not added to the back stack no longer causes a memory leak. Courtesy of Nicklas Ansman Giertz! ( b/166489383 )
  • Active fragments will now always have a non-null FragmentManager and fragments with a non-null FragmentManager will always be considered active. ( aosp/1422346 )
  • The fragment default effects, TRANSIT_FRAGMENT_OPEN , TRANSIT_FRAGMENT_CLOSE , and TRANSIT_FRAGMENT_FADE , now use Animator instead of Animation . ( b/166155034 )

New State Manager Bug Fixes

  • Fragments now properly restore their view focus state from right before they start their animation. ( Icc256 )
  • Fragments that only have a shared element transition now properly complete their special effects meaning they actually move to their final state ( Iaebc7 , b/166658128 )
  • Fragment views are now always removed from the container before being destroyed. ( Id5876 )
  • The new state manager now consistently removes the exiting fragment view before adding the entering one. ( I41a6e )
  • Explicit changes to a fragment view's visibility are now respected by the new state manager. This means that if you set an entering fragment's view to INVISIBLE before the animation begins, it will actually stay invisible. ( b/164481490 )
  • Fragments now prioritize Animators over Animations , meaning a fragment with both will only run the Animator and ignore the Animation . ( b/167579557 )
  • The new state manager no longer causes fragments to flash when using entering animations. ( b/163084315 )

Известная проблема

When using the new state manager, if you press back during an entering special effect instead of returning to the previous fragment, the old fragment is never re-added, resulting in a blank screen. ( b/167259187 , b/167092035 , b/168442830 )

Version 1.3.0-alpha08

19 августа 2020 г.

androidx.fragment:fragment:1.3.0-alpha08 , androidx.fragment:fragment-ktx:1.3.0-alpha08 , and androidx.fragment:fragment-testing:1.3.0-alpha08 are released. Version 1.3.0-alpha08 contains these commits.

New State Manager

This release includes a major refactoring of the internal state management of FragmentManager which affects the dispatch of lifecycle methods, animations and transitions, and how postponed transactions are handled. This is enabled by default. See the Fragments: Rebuilding the Internals blog post for more details. ( b/139536619 , b/147749580 )

  • An experimental API in FragmentManager.enableNewStateManager(boolean) can be used to control whether FragmentManager uses the new state manager. ( I7b6ee )

The following issues are fixed only when using the new state manager:

  • The previous fragment of a replace operation is now correctly stopped before the new fragment is started. ( b/161654580 )
  • Fragments now prevent multiple competing animations on the same fragments, avoiding cases where an Animation would override all Transition effects or an Animator and a Transition on an individual fragment would both run. ( b/149569323 )
  • The enterTransition and exitTranstion of all fragments entering and exiting are now ran rather than only the last entering fragment and the first exiting fragment. ( b/149344150 )
  • Postponed fragments no longer get stuck at the CREATED state but instead move to STARTED with other fragments. ( b/129035555 )
  • Fixed an issue where FragmentManager would execute operations out of order when mixing a postponed re-ordered transaction and a non-reordered transaction. ( b/147297731 )
  • Popping multiple fragments simultaneously will no longer result in intermediate fragments being temporarily visible when postponing fragments. ( b/37140383 )
  • FragmentManager now returns the correct fragments when calling findFragmentById() or findFragmentByTag() from within the onAttachFragment() callback. ( b/153082833 )
  • Fragments no longer call onCreateView() on fragments being destroyed when the fragment replacing them is postponed. ( b/143915710 )
  • The error message when attempting to combine framework Transition and AndroidX Transition instances now mentions the fragment with the invalid transition. ( b/155574969 )

Изменения в поведении

  • You can now call launch() on an ActivityResultLauncher in the onCreate() lifecycle method of a fragment. ( b/161464278 )
  • Calling registerForActivityResult() after onCreate() now throws an exception indicating that this is not allowed rather than silently failing to deliver results after a configuration change. ( b/162255449 )
  • FragmentActivity now uses the OnContextAvailableListener API introduced in Activity 1.2.0-alpha08 to restore the state of the FragmentManager . Any listeners added to subclasses of FragmentActivity will run after this listener. ( I513da )

Исправление ошибок

  • ActivityOptions passed through when using startIntentSenderForResult() are now respected. ( b/162247961 )

Известная проблема

  • When using the new state manager, directly setting the visibility of the fragment's root view after onViewCreated() and before onResume() results in the visibility you set being overridden by FragmentManager , who controls the visibility of the root view. As a workaround, you should always use the hide() and show() operations to change the visibility of your fragment. ( b/164481490 )

Version 1.3.0-alpha07

22 июля 2020 г.

androidx.fragment:fragment:1.3.0-alpha07 , androidx.fragment:fragment-ktx:1.3.0-alpha07 , and androidx.fragment:fragment-testing:1.3.0-alpha07 are released. Version 1.3.0-alpha07 contains these commits.

Новые возможности

  • FragmentScenario now supports setting an initial Lifecycle state of CREATED , STARTED , or RESUMED rather than always moving the Fragment to the RESUMED state. ( b/159662750 )
  • Added an alternative to the FragmentScenario API of onFragment in the form of the Kotlin reified extension method withFragment that allows you to return a value. Notably, it rethrows exceptions raised in the given block. ( b/158697631 )

Изменения в поведении

  • FragmentScenario now uses setMaxLifecycle() to implement moveToState() , ensuring consistent behavior on all API levels and decoupling the Fragment's state from the underlying Activity. ( b/156527405 )
  • The SavedStateRegistryOwner returned by ViewTreeSavedStateRegistryOwner is now tied to the fragment view's Lifecycle. This ensures that it has its state saved and restore at the same time as the fragment's view. ( b/158503763 )

Исправление ошибок

  • Fragments now wait for the fragment's view to be attached before calling ViewCompat.requestApplyInsets() , avoiding cases where the inset request was being dropped. ( b/158095749 )
  • Calling clearFragmentResultListener now properly clears the lifecycle observer. ( b/159274993 )

Version 1.3.0-alpha06

10 июня 2020 г.

androidx.fragment:fragment:1.3.0-alpha06 , androidx.fragment:fragment-ktx:1.3.0-alpha06 , and androidx.fragment:fragment-testing:1.3.0-alpha06 are released. Version 1.3.0-alpha06 contains these commits.

Новые возможности

  • The onAttachFragment() callback on FragmentActivity and Fragment have been deprecated. A new FragmentOnAttachListener has been added to provide a more flexible alternative, allowing delegation of onAttachFragment() to separate, testable listeners and support for adding a listener to FragmentManagers other than your direct child FragmentManager. ( I06d3d )

Исправление ошибок

  • Parent fragments now have their view state restored before their child fragments, fixing a visual ordering issue after a configuration change when a DialogFragment would show another DialogFragment as a child fragment. ( b/157195715 )
  • Fixed an issue where the UseRequireInsteadOfGet Lint check would not handle chained usages of the ?. and !! operators correctly. ( b/157677616 )

Version 1.3.0-alpha05

20 мая 2020 г.

androidx.fragment:fragment:1.3.0-alpha05 , androidx.fragment:fragment-ktx:1.3.0-alpha05 , and androidx.fragment:fragment-testing:1.3.0-alpha05 are released. Version 1.3.0-alpha05 contains these commits.

Новые возможности

Изменения API

  • The setFragmentResult() and setFragmentResultListener() APIs now take a non-null Bundle and FragmentResultListener , respectively. To explicitly clear a previously set result or listener, use the new clearFragmentResult() and clearFragmentResultListener() methods. ( b/155416778 )
  • The setFragmentResultListener() Kotlin extensions that take a lambda are now marked as inline . ( b/155323404 )

Изменения в поведении

  • The previously deprecated startActivityForResult() , startIntentSenderForResult() , and requestPermissions on Fragment now internally use ActivityResultRegistry , thus removing the restriction on using only the lower bits (below 0xFFFF ) for your request codes when using those APIs. ( b/155518741 )

Обновления документации

  • Expanded the documentation on the Fragment(@LayoutRes int) and DialogFragment(@LayoutRes int) constructors to clarify that they should be called from your subclasses' no argument constructor when using the default FragmentFactory . ( b/153042497 )

Version 1.3.0-alpha04

29 апреля 2020 г.

androidx.fragment:fragment:1.3.0-alpha04 , androidx.fragment:fragment-ktx:1.3.0-alpha04 , and androidx.fragment:fragment-testing:1.3.0-alpha04 are released. Version 1.3.0-alpha04 contains these commits.

Новые возможности

  • Added support for passing results between two Fragments via new APIs on FragmentManager . This works for hierarchy fragments (parent/child), DialogFragments, and fragments in Navigation and ensures that results are only sent to your Fragment while it is at least STARTED . ( b/149787344 )

Изменения API

  • The target fragment APIs have been deprecated. To pass data between fragments the new Fragment Result APIs should be used instead. ( b/149787344 )
  • The startActivityForResult() / onActivityResult() and requestPermissions() / onRequestPermissionsResult() APIs on Fragment have been deprecated. Please use the Activity Result APIs . ( aosp/1290887 )
  • Breaking change from Activity 1.2.0-alpha04 : the prepareCall() method has been renamed to registerForActivityResult() . ( aosp/1278717 )

Исправление ошибок

  • The fragment's getViewLifecycleOwner() is now stopped before onSaveInstanceState() is called, mirroring the behavior of the fragment's lifecycle. ( b/154645875 )
  • Calling setMenuVisibility(false) on a fragment now correctly changes the visibility of menus provided by its child fragments. ( b/153593580 )
  • Fixed an illegalStateException when adding a fragment to a DialogFragment 's view hierarchy with FragmentContainerView . ( b/154366601 )
  • The getDefaultViewModelProviderFactory() method on fragments no longer crashes when hosting your fragments outside of an activity. ( b/153762914 )

Version 1.3.0-alpha03

1 апреля 2020 г.

androidx.fragment:fragment:1.3.0-alpha03 , androidx.fragment:fragment-ktx:1.3.0-alpha03 , and androidx.fragment:fragment-testing:1.3.0-alpha03 are released. Version 1.3.0-alpha03 contains these commits.

Изменения API

  • The prepareCall methods on Fragment are now final . ( b/152439361 )

Исправление ошибок

  • Fixed a regression introduced in Fragment 1.3.0-alpha02 when using BottomSheetDialogFragment . ( b/151652127 , aosp/1263328 , aosp/1265163 )
  • Fixed a crash when using prepareCall from a fragment after a configuration change. ( b/152137004 )
  • Fixed an issue where shared element and exit transitions are ignored when using setTargetFragment() . ( b/152023196 )
  • From Fragment 1.2.4 : Updated the Fragment ProGuard rules to allow obfuscation of kept fragments. ( b/151605338 )
  • From Fragment 1.2.4 : Disabled the FragmentLiveDataObserve Lint rule on DialogFragment classes as their lifecycle and view lifecycle are always in sync, making it safe to use either this or viewLifecycleOwner when calling observe . ( b/151765086 )

Изменения зависимости

  • Fragments depend on Activity 1.2.0-alpha03 , which had significant improvements to the Activity Result API introduced in Activity 1.2.0-alpha02 .

Version 1.3.0-alpha02

18 марта 2020 г.

androidx.fragment:fragment:1.3.0-alpha02 , androidx.fragment:fragment-ktx:1.3.0-alpha02 , and androidx.fragment:fragment-testing:1.3.0-alpha02 are released. Version 1.3.0-alpha02 contains these commits.

Новые возможности

  • Added support for the ActivityResultRegistry API introduced in Activity 1.2.0-alpha02 to handle the startActivityForResult() + onActivityResult() as well as requestPermissions() + onRequestPermissionsResult() flows without overriding methods in your Fragment in addition to providing hooks for testing these flows. See the updated Getting a Result from an Activity . ( b/125158199 )

Изменения API

  • DialogFragment now provides a constructor that takes a @LayoutRes that indicates the layout that onCreateView() should inflate by default. ( b/150327080 )
  • The onActivityCreated() method is now deprecated. Code touching the fragment's view should be done in onViewCreated() (which is called immediately before onActivityCreated() ) and other initialization code should be in onCreate() . To receive a callback specifically when the activity's onCreate() is complete, a LifeCycleObserver should be registered on the activity's Lifecycle in onAttach() , and removed once the onCreate() callback is received. ( b/144309266 )

Исправление ошибок

  • From Fragment 1.2.3 : Fixed a bug in DialogFragment that caused a StackOverflowError when calling getLayoutInflater() from within onCreateDialog() . ( b/117894767 , aosp/1258664 )
  • From Fragment 1.2.3 : Reduced the scope of Fragment's included ProGuard rules to ensure that unused Fragment classes can be stripped. ( b/149665169 )
  • From Fragment 1.2.3 : Fixed false positives in the UseRequireInsteadOfGet Lint check when using a local variable name that shadowed the Kotlin property name. ( b/149891163 )
  • From Fragment 1.2.3 : FragmentContainerView no longer throws an UnsupportedOperationException for using the incorrect constructor in layout preview. ( b/149707833 )

Известные проблемы

  • BottomSheetDialogFragment no longer properly positions its dialog on the screen. ( b/151652127 )

Version 1.3.0-alpha01

4 марта 2020 г.

androidx.fragment:fragment:1.3.0-alpha01 , androidx.fragment:fragment-ktx:1.3.0-alpha01 , and androidx.fragment:fragment-testing:1.3.0-alpha01 are released. Version 1.3.0-alpha01 contains these commits.

Новые возможности

Изменения API

  • The setRetainInstance() method on Fragments has been deprecated. With the introduction of ViewModels , developers have a specific API for retaining state that can be associated with Activities, Fragments, and Navigation graphs. This allows developers to use a normal, not retained Fragment and keep the specific state they want retained separate, avoiding a common source of leaks while maintaining the useful properties of a single creation and destruction of the retained state (namely, the constructor of the ViewModel and the onCleared() callback it receives). ( b/143911815 )
  • With the release of ViewPager2 1.0.0 , the FragmentPagerAdapter and FragmentStatePagerAdapter classes for interacting with ViewPager have been deprecated. See Migrate from ViewPager to ViewPager2 . ( b/145132715 )

Исправление ошибок

  • Fragment ProGuard rules now correctly only keep the default constructors Fragment classes that are used rather than for all Fragment instances, fixing a regression introduced in Fragment 1.2.1 . ( b/149665169
  • The require___() Lint rules added in Fragment 1.2.2 no longer false positive on local variables that share the same name as the shadowed Kotlin property names (ie, view ). ( b/149891163 )
  • FragmentContainerView no longer throws an UnsupportedOperationException when using the layout preview in Android Studio. ( b/149707833 )
  • Fixed an issue where retained fragments that were added after the state is saved would not be continually recreated and then destroyed after each configuration change. ( b/145832397 )

Версия 1.2.5

Версия 1.2.5

10 июня 2020 г.

androidx.fragment:fragment:1.2.5 , androidx.fragment:fragment-ktx:1.2.5 , and androidx.fragment:fragment-testing:1.2.5 are released. Version 1.2.5 contains these commits.

Исправление ошибок

  • The fragment's getViewLifecycleOwner() is now stopped before onSaveInstanceState() is called, mirroring the behavior of the fragment's lifecycle. This was previously released in Fragment 1.3.0-alpha04 . ( b/154645875 )
  • Calling setMenuVisibility(false) on a fragment now correctly changes the visibility of menus provided by its child fragments. This was previously released in Fragment 1.3.0-alpha04 . ( b/153593580 )

Версия 1.2.4

Версия 1.2.4

1 апреля 2020 г.

androidx.fragment:fragment:1.2.4 , androidx.fragment:fragment-ktx:1.2.4 , and androidx.fragment:fragment-testing:1.2.4 are released. Version 1.2.4 contains these commits.

Исправление ошибок

  • Updated the Fragment ProGuard rules to allow obfuscation of kept fragments. ( b/151605338 )
  • Disabled the FragmentLiveDataObserve Lint rule on DialogFragment classes as their lifecycle and view lifecycle are always in sync, making it safe to use either this or viewLifecycleOwner when calling observe . ( b/151765086 )

Версия 1.2.3

Версия 1.2.3

18 марта 2020 г.

androidx.fragment:fragment:1.2.3 , androidx.fragment:fragment-ktx:1.2.3 , and androidx.fragment:fragment-testing:1.2.3 are released. Version 1.2.3 contains these commits.

Исправление ошибок

  • Fixed a bug in DialogFragment that caused a StackOverflowError when calling getLayoutInflater() from within onCreateDialog() . ( b/117894767 , aosp/1258665 )
  • Reduced the scope of Fragment's included ProGuard rules to ensure that unused Fragment classes can be stripped. ( b/149665169 )
  • Fixed false positives in the UseRequireInsteadOfGet Lint check when using a local variable name that shadowed the Kotlin property name. ( b/149891163 )
  • FragmentContainerView no longer throws an UnsupportedOperationException for using the incorrect constructor in layout preview. ( b/149707833 )

Версия 1.2.2

Версия 1.2.2

19 февраля 2020 г.

androidx.fragment:fragment:1.2.2 , androidx.fragment:fragment-ktx:1.2.2 , and androidx.fragment:fragment-testing:1.2.2 are released. Version 1.2.2 contains these commits.

New Lint checks

  • Lint suggests using the viewLifecycleOwner as the LifecycleOwner to calls into OnBackPressedDispatcher in onCreateView() , onViewCreated() , and onActivityCreated() . ( b/142117657 )
  • Added a new Lint check that confirms that you are using the correct debugImplementation when using the fragment-testing artifact. ( b/141500106 )
  • Fragments now suggest using the associated require___() methods for more descriptive error messages instead of checkNotNull(get___()) , requireNonNull(get___()) , or get___()!! for all of the Fragment APIs that include both a get and require equivalent. ( aosp/1202883 )

Исправление ошибок

  • Fixed the Fragment ProGuard files to avoid R8 warnings ( b/148963981 )
  • Improved the existing Lint check suggesting using viewLifecycleOwner when using observe to also handle the livedata-ktx extension method version of observe . ( b/148996309 )
  • Fixed the formatting for many of the Lint checks ( aosp/1157012 )

External contributions

  • Thanks to Zac Sweers for contributing the require___() Lint checks on behalf of Slack! ( aosp/1202883 )

Версия 1.2.1

Версия 1.2.1

5 февраля 2020 г.

androidx.fragment:fragment:1.2.1 , androidx.fragment:fragment-ktx:1.2.1 , and androidx.fragment:fragment-testing:1.2.1 are released. Version 1.2.1 contains these commits .

Исправления ошибок

  • Fragments added via the add and replace methods that take a Class instance (or the Kotlin reified versions) now have their default constructor kept by ProGuard. ( b/148181315 )
  • FragmentStatePagerAdapter and FragmentPagerAdapter no longer catch exceptions thrown by FragmentManager when running finishUpdate() . ( aosp/1208711 )
  • Fixed an issue where FragmentManager.findFragment() did not work with fragments added via the <fragment> tag. ( b/147784323 )
  • Fragments inflated using the <fragment> tag now always receive a call to onInflate() before onCreate() when in the layout. ( aosp/1215856 )
  • Calling toString() on a FragmentManager instance no longer throws a NullPointerException when the Activity is already destroyed. ( b/148189412 )

Изменения зависимости

Версия 1.2.0

Версия 1.2.0

22 января 2020 г.

androidx.fragment:fragment:1.2.0 , androidx.fragment:fragment-ktx:1.2.0 , and androidx.fragment:fragment-testing:1.2.0 are released. Version 1.2.0 contains these commits .

Important changes since 1.1.0

  • FragmentContainerView : The FragmentContainerView is the strongly recommended container for dynamically added Fragments, replacing usage of FrameLayout or other layouts. It also supports the same class , android:name , and optional android:tag as the <fragment> tag, but uses a normal FragmentTransaction to add this initial fragment, instead of the custom code path used by <fragment> .
  • onDestroyView() timing : Fragments now wait for exit animations, exit framework transitions, and exit AndroidX transitions (when using Transition 1.3.0 ) to complete before calling onDestroyView() .
  • Class based add() and replace() : Added new overloads of add() and replace() on FragmentTransaction that take a Class<? extends Fragment> and optional Bundle of arguments. These methods use your FragmentFactory to construct an instance of the Fragment to add. Kotlin extensions that use reified types (ie, fragmentTransaction.replace<YourFragment>(R.id.container) ) have also been added to fragment-ktx .
  • Lifecycle ViewModel SavedState Integration : SavedStateViewModelFactory is now the default factory used when using by viewModels() , by activityViewModels() , the ViewModelProvider constructor, or ViewModelProviders.of() with a Fragment.
  • New Lint checks : Added a new Lint check that ensures you are using getViewLifecycleOwner() when observing LiveData from onCreateView() , onViewCreated() , or onActivityCreated() .
  • getFragmentManager() deprecation : The getFragmentManager() and requireFragmentManager() methods on Fragment have been deprecated and replaced with a single getParentFragmentManager() method, which returns the non-null FragmentManager the Fragment is added to (you can use isAdded() to determine if it is safe to call).
  • FragmentManager.enableDebugLogging() deprecation : The static FragmentManager.enableDebugLogging method has been deprecated. FragmentManager now respects Log.isLoggable() for the tag FragmentManager , allowing you to enable either DEBUG or VERBOSE logging without re-compiling your app.

Известные проблемы

  • Fragments referenced only via the class or android:name attribute on a FragmentContainerView are not kept by ProGuard automatically, requiring that you manually add a keep rule for each fragment class. ( b/142601969 )
  • When adding a NavHostFragment using class or android:name in XML with FragmentContainerView , you cannot use findNavController() in onCreate() of your Activity. ( b/142847973 )

Version 1.2.0-rc05

8 января 2020 г.

androidx.fragment:fragment:1.2.0-rc05 , androidx.fragment:fragment-ktx:1.2.0-rc05 , and androidx.fragment:fragment-testing:1.2.0-rc05 are released. Version 1.2.0-rc05 contains these commits .

Исправления ошибок

  • Fixed a regression in Fragment 1.2.0-rc04 when using the <fragment> tag which caused onViewCreated() to be called incorrectly during activity destruction. ( b/146290333 )
  • Fragments added with the <fragment> tag now properly have their non-config cleared even when they are only sometimes in the layout (ie, only in your landscape layout). As a consequence, these Fragments are now correctly moved to CREATED even when not in your layout instead of being instantiated but never moving through any lifecycle methods. ( b/145769287 )

Version 1.2.0-rc04

18 декабря 2019 г.

androidx.fragment:fragment:1.2.0-rc04 , androidx.fragment:fragment-ktx:1.2.0-rc04 , and androidx.fragment:fragment-testing:1.2.0-rc04 are released. Version 1.2.0-rc04 contains these commits .

Исправления ошибок

  • Adjusted the animations for TRANSIT_FRAGMENT_OPEN , TRANSIT_FRAGMENT_CLOSE , and TRANSIT_FRAGMENT_FADE to avoid visual issues. ( b/145468417 )

Version 1.2.0-rc03

4 декабря 2019 г.

androidx.fragment:fragment:1.2.0-rc03 , androidx.fragment:fragment-ktx:1.2.0-rc03 , and androidx.fragment:fragment-testing:1.2.0-rc03 are released. Version 1.2.0-rc03 contains these commits .

Исправления ошибок

  • Fixed an unintentional behavior change where Fragments who have been removed are still returned by findFragmentById() / findFragmentByTag() while their exit animations/transitions run. ( b/143982969 , aosp/1167585 )
  • Child fragments are now correctly stopped before their parents when the containing activity calls onSaveInstanceState() . ( b/144380645 )
  • Fixed an issue where Views were incorrectly marked INVISIBLE after popping a hidden Fragment. ( b/70793925 )
  • Fragment shared element transitions now handle Views that have been rotated, scaled, etc. ( b/142835261 )

Обновления документации

  • Clarified the deprecation documentation around setUserVisibleHint() . ( b/143897055 )
  • Improved the documentation on setFragmentFactory() and getFragmentFactory() to better indicate that setting a FragmentFactory will also affect child FragmentManagers. ( aosp/1170095 )

Изменения зависимости

  • Fragments now depends on Lifecycle 2.2.0-rc03 , Lifecycle ViewModel SavedState 1.0.0-rc03 , and Activity 1.1.0-rc03 .

Version 1.2.0-rc02

7 ноября 2019 г.

androidx.fragment:fragment:1.2.0-rc02 , androidx.fragment:fragment-ktx:1.2.0-rc02 , and androidx.fragment:fragment-testing:1.2.0-rc02 are released. Version 1.2.0-rc02 contains these commits .

Исправления ошибок

  • When in Kotlin, the LintFix for using getViewLifecycleOwner() when observing LiveData from onCreateView() , onViewCreated() , or onActivityCreated() (introduced in Fragment 1.2.0-rc01 ) now uses the Kotlin property access syntax viewLifecycleOwner instead of getViewLifecycleOwner() . ( aosp/1143821 )

Version 1.2.0-rc01

23 октября 2019 г.

androidx.fragment:fragment:1.2.0-rc01 , androidx.fragment:fragment-ktx:1.2.0-rc01 , and androidx.fragment:fragment-testing:1.2.0-rc01 are released. Version 1.2.0-rc01 contains these commits .

Новые возможности

  • FragmentContainerView now supports the class attribute in addition to android:name , mirroring the functionality of the <fragment> tag. ( b/142722242 )
  • Added a new Lint check that ensures you are using getViewLifecycleOwner() when observing LiveData from onCreateView() , onViewCreated() , or onActivityCreated() . ( b/137122478 )

Исправления ошибок

  • The onDismiss and onCancel callbacks on DialogFragment now guarantee that the DialogInterface passed to them is non-null and that getDialog() returns non-null when they are executed. ( b/141974033 )
  • FragmentContainerView now adds the Fragment defined by class or android:name as part of inflation, ensuring that findFragmentById() and findFragmentByTag() work immediately afterwards. ( b/142520327 )
  • Fixed an IllegalStateException in FragmentContainerView due to the state being saved. ( b/142580713 )
  • Fixed an UnsupportedOperationException in FragmentContainerView when the FragmentContainerView class is obfuscated. ( b/142657034 )

Известные проблемы

  • Fragments referenced only via the class or android:name attribute on a FragmentContainerView are not kept by ProGuard automatically, requiring that you manually add a keep rule for each fragment class. We have disabled the Lint rule suggesting moving to FragmentContainerView until this is fixed via aapt2 . ( b/142601969 )

Version 1.2.0-beta02

11 октября 2019 г.

androidx.fragment:fragment:1.2.0-beta02 , androidx.fragment:fragment-ktx:1.2.0-beta02 , and androidx.fragment:fragment-testing:1.2.0-beta02 are released. Version 1.2.0-beta02 contains these commits .

Исправления ошибок

  • Fixed an issue where Fragment's onInflate() did not receive proper attributes from FragmentContainerView , breaking cases such as NavHostFragment . ( b/142421837 )

Version 1.2.0-beta01

9 октября 2019 г.

androidx.fragment:fragment:1.2.0-beta01 , androidx.fragment:fragment-ktx:1.2.0-beta01 , and androidx.fragment:fragment-testing:1.2.0-beta01 are released. Version 1.2.0-beta01 contains these commits .

Новые возможности

  • FragmentContainerView adds support for adding an initial fragment with added support for the android:name and optional android:tag XML attributes. Unlike the <fragment> tag, FragmentContainerView uses a normal FragmentTransaction under the hood to add the initial fragment, allowing further FragmentTransaction operations on the FragmentContainerView and enables the usage of View Binding for the layout. ( b/139830628 , b/141177981 )
  • Fragments now contains a Lint warning offering a quick fix to replace <fragment> with FragmentContainerView . ( b/139830056 )

Исправления ошибок

  • Fixed a ClassCastException when using androidx.transition . ( b/140680619 )
  • When using Transition 1.3.0-beta01 , Fragments now wait for androidx.transition transitions (in addition to framework transitions and animations, which were fixed in Fragment 1.2.0-alpha03 and Fragment 1.2.0-alpha02 , respectively) to finish before dispatching onDestroyView() . ( aosp/1119841 )
  • When using Transition 1.3.0-beta01 , Fragments now properly cancel androidx.transition transitions before starting new transitions / animations on the same container. ( aosp/1119841 )
  • Fixed an issue on API 17 and lower when using androidx.transition transitions on the root view of your Fragment when using FragmentContainerView . ( b/140361893 )
  • The fragment-testing artifact now depends on AndroidX Test 1.2.0 , fixing an incompatibility with the latest Espresso 3.2.0. ( b/139100149 )
  • Removed usage of Log.w in FragmentManager. ( aosp/1126468 )

Известные проблемы

  • Fragment's onInflate() do not receive proper attributes from FragmentContainerView , breaking cases such as NavHostFragment . ( b/142421837 )

Version 1.2.0-alpha04

18 сентября 2019 г.

androidx.fragment:fragment:1.2.0-alpha04 , androidx.fragment-ktx:example:1.2.0-alpha04 , and androidx.fragment:fragment-testing:1.2.0-alpha04 are released. Version 1.2.0-alpha04 contains these commits .

Изменения API

  • The getFragmentManager() and requireFragmentManager() methods on Fragment have been deprecated and replaced with a single getParentFragmentManager() method, which returns the non-null FragmentManager the Fragment is added to (you can use isAdded() to determine if it is safe to call). ( b/140574496 )
  • The static FragmentManager.enableDebugLogging method has been deprecated. FragmentManager now respects Log.isLoggable() for the tag FragmentManager , allowing you to enable either DEBUG or VERBOSE logging without re-compiling your app. ( aosp/1116591 )

Исправления ошибок

  • Fragments are now properly destroyed while exit animations on other fragments are running. ( b/140574199 )
  • Fixed an issue where Fragments would call Activity.findViewById() where before it did not. ( aosp/1116431 )

Version 1.2.0-alpha03

5 сентября 2019 г.

androidx.fragment:fragment:1.2.0-alpha03 , androidx.fragment:fragment-ktx:1.2.0-alpha03 , and androidx.fragment:fragment-testing:1.2.0-alpha03 are released. The commits included in this version can be found here .

Изменения API

Исправления ошибок

  • FragmentContainerView now properly reverses the draw order when popping fragments off the back stack. ( b/139104187 )
  • Fixed an issue where the wrong animation would run when both popping a fragment and adding a new fragment at the same time. ( b/111659726 )
  • Fragments now wait for transitions (in addition to animations, which was fixed in Fragment 1.2.0-alpha02 ) to finish before dispatching onDestroyView() . ( b/138741697 )

Version 1.2.0-alpha02

7 августа 2019 г.

androidx.fragment:fragment:1.2.0-alpha02 , androidx.fragment:fragment-ktx:1.2.0-alpha02 , and androidx.fragment:fragment-testing:11.2.0-alpha02 is released. The commits included in this version can be found here .

Новые возможности

  • SavedStateViewModelFactory is now the default factory used when using by viewModels() , by activityViewModels() , the ViewModelProvider constructor, or ViewModelProviders.of() with a Fragment . ( b/135716331 )
  • The default animations when using TRANSIT_FRAGMENT_OPEN , TRANSIT_FRAGMENT_CLOSE , TRANSIT_FRAGMENT_FADE with setTransition on a FragmentTransaction have been updated to match the animations used by activities on Android 10 devices. ( aosp/1012812 , aosp/1014730 )

Изменения API

  • Introduces FragmentContainerView as the strongly recommended container for dynamically added Fragments, replacing usage of FrameLayout , etc. as it fixes animation z-ordering issues and window insets dispatching to Fragments. ( b/37036000 , aosp/985243 , b/136494650 )
  • Added a static FragmentManager.findFragment(View) method to retrieve the containing Fragment from a view inflated by a fragment. A Kotlin extension is also available in fragment-ktx . ( aosp/1090757 )
  • Added new overloads of add() and replace() on FragmentTransaction that take a Class<? extends Fragment> and optional Bundle of arguments. These methods use your FragmentFactory to construct an instance of the Fragment to add. Kotlin extension that use reified types (ie, fragmentTransaction.replace<YourFragment>(R.id.container) ) have also been added to fragment-ktx . ( b/126124987 )
  • @MainThread annotations have been added to Fragment lifecycle callbacks. ( b/127272564 )
  • The breadcrumb title related APIs on FragmentTransaction and FragmentManager.BackStackEntry have been deprecated. ( b/138252944 )
  • The setTransitionStyle method on FragmentTransaction has been deprecated. ( aosp/1011537 )
  • Many of the methods in FragmentManager are no longer abstract . FragmentManager itself remains abstract and should not be directly instantiated or extended; you should continue to only get an existing instance from getSupportFragmentManager() , getChildFragmentManager() , etc.

Исправления ошибок

  • From Fragment 1.1.0-rc04 : Fragments now correctly cancel postponed transitions on Fragments have been popped. ( b/138251858 )
  • From Fragment 1.1.0-rc03 : Fixed an issue where calling postponeEnterTransition() with a timeout more than once would not cancel previous timeouts. ( b/137797118 )
  • From Fragment 1.1.0-rc02 : Fixed a crash in FragmentPagerAdapter and FragmentStatePagerAdapter when removing the current item. ( b/137209870 )
  • Fragments now wait for animations to finish before dispatching onDestroyView() . ( b/136110528 )
  • Fragment animations from child fragments and their descendants are now properly handled when animating the parent Fragment. ( b/116675313 )
  • Fixed a NullPointerException when using shared element transitions and combining a pop and add operation. ( b/120507394 )
  • Added a workaround to IllegalStateException s when using FragmentPagerAdapter and FragmentStatePagerAdapter in Robolectric tests. ( b/137201343 )

Version 1.2.0-alpha01

2 июля 2019 г.

androidx.fragment:fragment:1.2.0-alpha01 , androidx.fragment:fragment-ktx:1.2.0-alpha01 , and androidx.fragment:fragment-testing:1.2.0-alpha01 are released. The commits included in this version can be found here .

Новые возможности

  • FragmentManager now calls requestApplyInsets() after attaching the Fragment's view and directly before calling onViewCreated() , ensuring that your view always has the correct insets. ( b/135945162 )

Исправления ошибок

  • Fixed a NullPointerException when popping a FragmentTransaction that used setPrimaryNavigationFragment() before replace() . ( b/134673465 )

Версия 1.1.0

Версия 1.1.0

5 сентября 2019 г.

androidx.fragment:fragment:1.1.0 , androidx.fragment:fragment-ktx:1.1.0 , and androidx.fragment:fragment-testing:1.1.0 are released. The commits included in this version can be found here .

Important Changes since 1.0.0

  • fragment-testing : The fragment-testing artifact provides a FragmentScenario class for testing a fragment in isolation. See Test your app's fragments documentation for more details.
  • FragmentFactory : You can now set a FragmentFactory on a FragmentManager to manage the creation of fragment instances, removing the strict requirement to have a no-argument constructor.
  • Kotlin Property Delegates for ViewModels : The fragment-ktx artifact now contains two Kotlin property delegates: by viewModels() for accessing ViewModels associated with the individual fragment and by activityViewModels() for accessing ViewModels scoped to the activity.
  • Max Lifecycle : You can now set a max Lifecycle state for a Fragment by calling setMaxLifecycle() on a FragmentTransaction . This replaces the now deprecated setUserVisibleHint() . FragmentPagerAdapter and FragmentStatePagerAdapter have a new constructor that allows you to switch to the new behavior.
  • FragmentActivity LayoutId constructor : Subclasses of FragmentActivity can now optionally call into a constructor on FragmentActivity that takes an R.layout ID, indicating the layout that should be set as the content view as an alternative to calling setContentView() in onCreate() . This does not change the requirement that your subclass have a no-argument constructor.
  • Fragment LayoutId constructor : Subclasses of Fragment can now optionally call into a constructor on Fragment that takes an R.layout ID, indicating the layout that should be used for this fragment as an alternative to overriding onCreateView() . The inflated layout can be configured in onViewCreated() .
  • Postpone with a timeout : A new overload of postponeEnterTransition() has been added that takes a timeout.

Version 1.1.0-rc04

7 августа 2019 г.

androidx.fragment:fragment:1.1.0-rc04 , androidx.fragment:fragment-ktx:1.1.0-rc04 , and androidx.fragment:fragment-testing:1.1.0-rc04 is released. The commits included in this version can be found here .

Исправления ошибок

  • Fragments now correctly cancel postponed transitions on Fragments have been popped. ( b/138251858 )

Version 1.1.0-rc03

19 июля 2019 г.

androidx.fragment:fragment:1.1.0-rc03 , androidx.fragment:fragment-ktx:1.1.0-rc03 , and androidx.fragment:fragment-testing:1.1.0-rc03 is released. The commits included in this version can be found here .

Исправления ошибок

  • Fixed an issue where calling postponeEnterTransition() with a timeout more than once would not cancel previous timeouts. ( b/137797118 )

Version 1.1.0-rc02

17 июля 2019 г.

androidx.fragment:fragment:1.1.0-rc02 , androidx.fragment:fragment-ktx:1.1.0-rc02 , and androidx.fragment-testing:fragment:1.1.0-rc02 are released. The commits included in this version can be found here .

Исправления ошибок

  • Fixed a crash in FragmentPagerAdapter and FragmentStatePagerAdapter when removing the current item. ( b/137209870 )

Version 1.1.0-rc01

2 июля 2019 г.

androidx.fragment:fragment:1.1.0-rc01 , androidx.fragment:fragment-ktx:1.1.0-rc01 , and androidx.fragment:fragment-testing:1.1.0-rc01 are released. The commits included in this version can be found here .

Исправления ошибок

  • Fragments now properly update their visibility when using show() or hide() operations while the transition is running. ( b/133385058 )
  • Fixed a NullPointerException when popping a FragmentTransaction that used setPrimaryNavigationFragment() before replace() . ( b/134673465 )

Version 1.1.0-beta01

5 июня 2019 г.

androidx.fragment:fragment:1.1.0-beta01 , androidx.fragment:fragment-ktx:1.1.0-beta01 , and androidx.fragment:fragment-testing:1.1.0-beta01 are released. The commits included in this version can be found here .

Исправления ошибок

  • androidx.lifecycle.Lifecycle callbacks (specifically related to STARTED , RESUMED , PAUSED , STOPPED , and DESTROYED ) for nested Fragments are now properly nested. ( b/133497591 )
  • OnBackPressedCallback instances registered in a Fragment's onCreate() now properly take precedence over the child FragmentManager. ( b/133175997 )
  • Child fragments are no longer animated when their parent fragment is being replaced. ( b/121017790 )
  • Fragments animations and transitions are now ignored when using animateLayoutChanges="true" , fixing an issue where Fragments were not properly destroyed. ( b/116257087 )

Version 1.1.0-alpha09

16 мая 2019 г.

androidx.fragment:fragment:1.1.0-alpha09 , androidx.fragment:fragment-ktx:1.1.0-alpha09 , and androidx.fragment:fragment-testing:1.1.0-alpha09 are released. The commits included in this version can be found here .

Изменения API

  • Fragments now receive a callback to a new onPrimaryNavigationFragmentChanged(boolean) method when the primary navigation fragment changes. aosp/960857

Исправления ошибок

  • Menu Items inflated by a child Fragment are now correctly removed when the Parent Fragment is removed. b/131581013

Version 1.1.0-alpha08

7 мая 2019 г.

androidx.fragment:fragment:1.1.0-alpha08 , androidx.fragment:fragment-ktx:1.1.0-alpha08 , and androidx.fragment:fragment-testing:1.1.0-alpha08 are released. The commits included in this version can be found here .

This release is incompatible with Preferences 1.1.0-alpha01 through 1.1.0-alpha04. Please upgrade to Preferences 1.1.0-alpha05 when using this version of Fragments.

Новые возможности

  • Added a new overload of postponeEnterTransition() that takes a timeout, after which the Fragment will automatically call startPostponedEnterTransition() b/120803208

Изменения API

  • Breaking change: the previously deprecated FragmentFactory instantiate method that took a Bundle has been removed. aosp/953856
  • Breaking change: The RESUME_ONLY_CURRENT_FRAGMENT and USE_SET_USER_VISIBLE_HINT constants in FragmentPagerAdapter and FragmentStatePagerAdapter have been renamed to BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT and BEHAVIOR_SET_USER_VISIBLE_HINT , respectively. aosp/954782

Исправления ошибок

  • Fragments that have had their lifecycle capped via setMaxLifecycle() no longer get resumed before reaching their final state. b/131557151
  • When using setMaxLifecycle(Lifecycle.State.CREATED) , Fragments will properly have their view destroyed. aosp/954180

Version 1.1.0-alpha07

25 апреля 2019 г.

androidx.fragment:fragment:1.1.0-alpha07 , androidx.fragment:fragment-ktx:1.1.0-alpha07 , and androidx.fragment:fragment-testing:1.1.0-alpha07 are released. The commits included in this version can be found here .

Новые возможности

  • You can now set a max Lifecycle state for a Fragment by calling setMaxLifecycle() on a FragmentTransaction . This replaces the now deprecated setUserVisibleHint() . FragmentPagerAdapter and FragmentStatePagerAdapter have a new constructor that allows you to switch to the new behavior. ( b/129780800 )

Изменения API

  • moveToState(STARTED) on FragmentScenario can now only be called on API 24+ devices. ( b/129880016 )

Изменения в поведении

  • As a consequence of ( b/129907905 ), fragments on the back stack will not get a callback to onCreateView() when the hosting activity is recreated. onCreateView() will now only be called when the fragment becomes visible (ie, the back stack is popped).

Исправления ошибок

  • Fixed an issue when using a <fragment> tag in XML and the contentLayoutId constructor of FragmentActivity or AppCompatActivity . ( b/129907905 )
  • Corrected an issue where fragments on the back stack would not be moved to at least CREATED after a configuration change, causing ViewModels and child retained fragments to not be properly disposed. ( b/129593351 )
  • Fixed a crash in restoreSaveState caused by a desync of the retained fragments after the instance state is saved. ( b/130433793 ) ( aosp/947824 )
  • Fixed issues where an OnBackPressedCallback added with a fragment lifecycle would not be called if the FragmentManager had a back stack. See androidx.activity 1.0.0-alpha07 for more details. ( aosp/948209 )
  • Fragments no longer enforce LAYER_TYPE_HARDWARE for animations. If you specifically need a hardware layer animation, please set it as part of your animation. ( b/129486478 )

Version 1.1.0-alpha06

3 апреля 2019 г.

androidx.fragment:fragment:1.1.0-alpha06 , androidx.fragment:fragment-ktx:1.1.0-alpha06 , and androidx.fragment:fragment-testing:1.1.0-alpha06 are released. The commits included in this version can be found here .

Новые возможности

  • Exceptions thrown by FragmentManager now include the Fragment's name in the message. ( b/67759402 )

Изменения API

  • Fragment and FragmentActivity now contain a second constructor that takes a @LayoutRes int , which replaces the previous behavior of annotating your class with @ContentView . This approach works in both app and library modules. ( b/128352521 )
  • FragmentActivity's onActivityResult() is now properly marked as @CallSuper . ( b/127971684 )
  • The FragmentFactory's instantiate method that takes an argument Bundle has been deprecated and apps should use the new instantiate overload that does not take a Bundle. ( b/128836103 )
  • FragmentScenario methods are now properly annotated with @StyleRes . ( aosp/924193 )
  • FragmentTabHost has been deprecated. ( b/127971835 )
  • FragmentActivity's getThemedContext() has been removed. ( aosp/934078 )

Исправления ошибок

  • Fixed a regression in 1.1.0-alpha05 that caused the incoming Fragment to flash on the screen. ( b/129405432 )
  • Fixed an issue where the primary navigation fragment would be lost after a popBackStack+replace+popBackStack series of operations. ( b/124332597 )
  • Fixed an issue when using @ContentView constructors on your Activity when restoring Fragment state. ( b/127313094 )
  • Corrected the logic of setTargetFragment() when replacing an existing target Fragment with a Fragment not yet attached to the FragmentManager. ( aosp/932156 )

Version 1.1.0-alpha05

13 марта 2019 г.

androidx.fragment:fragment:1.1.0-alpha05 , androidx.fragment:fragment-ktx:1.1.0-alpha05 , and androidx.fragment:fragment-testing:1.1.0-alpha05 are released. The full list of commits included in this version can be found here .

Новые возможности

  • @ContentView annotation lookups are now cached ( b/123709449 )

Изменения в поведении

  • Calling remove() , hide() , show() , detach() , and setPrimaryNavigationFragment() with a Fragment attached to a different FragmentManager now throws an IllegalStateException rather than silently failing ( aosp/904301 )

Исправления ошибок

  • onNewIntent for FragmentActivity is now correctly marked with @CallSuper ( b/124120586 )
  • Fixed an issue where DialogFragment 's onDismiss() could be called twice when using getDialog().dismiss() or getDialog().cancel() ( b/126563750 )

Version 1.1.0-alpha04

7 февраля 2019 г.

androidx.fragment:fragment 1.1.0-alpha04 , androidx.fragment:fragment-ktx 1.1.0-alpha04 , and androidx.fragment:fragment-testing 1.1.0-alpha04 are released.

Новые возможности

  • Added support for the @ContentView class annotation that allows you to indicate which layout XML file should be inflated as an alternative to overriding onCreateView() . It is recommended to do view related work in onViewCreated() . ( aosp/837619 )
  • fragment-testing now depends on androidx.test:core-ktx 1.1.0 stable ( b/121209673 )
  • You can now use openActionBarOverflowOrOptionsMenu with FragmentScenario to test Fragment hosted options menus ( b/121126668 )

Изменения API

  • Added a requireArguments() method which returns a @NonNull Bundle or throws an IllegalStateException ( b/121196360 )
  • Added a note that getLifecycle() , getViewLifecycleOwner() , and getViewLifecycleOwnerLiveData() should not be overridden and will be made final in a future release. Please file a feature request if you are currently overriding this method. ( aosp/880714 )
  • Added a note that getViewModelStore() should not be overridden and will be made final in a future release. Please file a feature request if you are currently overriding this method. ( aosp/880713 )
  • Fixed an issue with binary compatibility with previous releases of Fragments. ( aosp/887877 ) ( aosp/889834 )

Исправления ошибок

  • Target fragments are correctly cleared out when you pass null to setTargetFragment() . ( aosp/849969 )
  • Fixed an issue where target Fragments were sometimes unavailable in or after onDestroy() . ( b/122312935 )
  • DialogFragment's onDismiss() is now called before onDestroy() . ( aosp/874133 ) ( aosp/890734 )

Version 1.1.0-alpha03

17 декабря 2018 г.

Новые возможности

  • Fragment now implements BundleSavedStateRegistryOwner and depends on the newly released SavedState library [ aosp/824380 ]
  • A by activityViewModels Kotlin property delegate has been added to retrieve ViewModels associated with the containing Activity [ b/119050253 ]
  • The by viewModels Kotlin property delegate has been expanded to take an optional lambda method for getting the ViewModelStoreOwner , allowing you to pass in the parent Fragment or other custom ViewModelStoreOwner with code such as val viewModel: MyViewModel by viewModels(::requireParentFragment) [ b/119050253 ]

Изменения API

  • FragmentScenario now allows you to specify a theme such as Theme.AppCompat [ b/119054431 ]. This is a breaking change.
  • Added a requireView() method which returns a @NonNull View or throws an IllegalStateException [ b/120241368 ]
  • Added a requireParentFragment() method which returns a @NonNull Fragment or throws an IllegalStateException [ b/112103783 ]

Исправления ошибок

  • Fixed IllegalStateException: Failure saving state b/120814739
  • Fragments being restored from saved instance state will now always receive a non-null Bundle [ b/119794496 ]
  • Removed Fragments no longer reuse their Lifecycle object if re-added [ b/118880674 ]

Version 1.1.0-alpha02

3 декабря 2018 г.

Новые возможности

  • FragmentScenario's Kotlin extensions now let you use a lambda for Fragment construction as an alternative to passing in a FragmentFactory instance. ( aosp/812913 )

Исправления ошибок

  • Fixed an IllegalStateException when using nested Fragments on the back stack ( b/119256498 )
  • Fixed crash when using FragmentScenario.recreate() with a FragmentFactory ( aosp/820540 )
  • Fixed an issue where target Fragments were not accessible after the Fragment was removed ( aosp/807634 )

Version 1.1.0-alpha01

5 ноября 2018 г.

This is the first release of the fragment-testing artifact and FragmentScenario which is built on top of the androidx.test:core APIs. See the Fragment testing documentation for more details.

Новые возможности

  • New FragmentScenario class for testing Fragments in isolation.
  • You can now set a FragmentFactory on any FragmentManager to control how new Fragment instances are instantiated.
  • Added a new by viewModels() Kotlin property delegate for retrieving ViewModels from a Fragment.
  • Pending input events (such as clicks) are now canceled in a Fragment's onStop() .

Изменения API

  • Significantly expanded the nullability annotations across the Fragment API surface.

Исправления ошибок

  • Fix an issue which caused Fragment operations to fail from within LiveData (b/77944637)

Известные проблемы

  • Target Fragments cannot be accessed after a Fragment has been removed from the FragmentManager.
  • fragment-testing depends on androidx.test:core:1.0.0-beta01 instead of the correct androidx.test:core:1.0.0 .