Фрагмент
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
|---|---|---|---|---|
| 13 августа 2025 г. | 1.8.9 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от Fragment, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
классный
dependencies { def fragment_version = "1.8.9" // Java language implementation implementation "androidx.fragment:fragment:$fragment_version" // Kotlin implementation "androidx.fragment:fragment-ktx:$fragment_version" // Compose implementation "androidx.fragment:fragment-compose:$fragment_version" // Testing Fragments in Isolation debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version" androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version" }
Котлин
dependencies { val fragment_version = "1.8.9" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.
Более подробную информацию см. в документации по системе отслеживания проблем .
Версия 1.8
Версия 1.8.9
13 августа 2025 г.
Выпущен androidx.fragment:fragment-*:1.8.9 . Версия 1.8.9 содержит следующие коммиты .
Исправления ошибок
- Исправлена ошибка, из-за которой отмена предиктивного жеста «назад», вызывающего операцию скрытия, приводила к тому, что последующий жест не анимировался правильно при использовании аниматоров. ( I0a400 , b/384765586 )
- Исправлена ошибка, из-за которой комбинация
setMaxLifecycleиpopBackStackмогла не переместить верхний фрагмент в RESUMED. ( I3448b , b/406127576 )
Версия 1.8.8
4 июня 2025 г.
Выпущен androidx.fragment:fragment-*:1.8.8 . Версия 1.8.8 содержит следующие коммиты .
Исправления ошибок
- Исправлена ошибка, из-за которой
FragmentManagerаварийно завершал работу при попытке сохранить состояние фрагментов, добавленных с помощьюsetMaxLifecycle(Lifecycle.State.INITIALIZED). Поскольку эти фрагменты никогда не обрабатываются методомonCreate(), они больше не сохраняют состояние и не вызывают методonSaveInstanceState(). ( I6e37a )
Версия 1.8.7
20 мая 2025 г.
Выпущен androidx.fragment:fragment-*:1.8.7 . Версия 1.8.7 содержит следующие коммиты .
Исправления ошибок
- Исправлена проблема с
FragmentManager, из-за которой он не находился в правильном состоянии после операций извлечения и замены в одном кадре, что могло приводить к сбою в сочетании с извлечением стека возврата либо с помощью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теперь корректно учитывает отложенные операции при обработке предиктивного жеста «Назад». Это должно гарантировать, что системный возврат больше не будет приводить к возникновению исключения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теперь содержитAndroidFragmentComposable, позволяющий добавлять фрагменты в иерархию Compose через имя класса фрагмента. Он автоматически обрабатывает сохранение и восстановление состояния фрагмента. Это следует использовать в качестве прямой замены ранее рекомендованному подходу с использованиемAndroidViewBindingдля расширения фрагмента. - Обратный вызов
onBackStackChangeCancelledв интерфейсеOnBackStackChangedListenerFragmentManagerтеперь срабатывает как часть выполнения операций в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 содержит следующие коммиты .
Новые функции
- Новый
AndroidFragmentComposableпозволяет добавлять фрагменты в иерархию Compose, используя имя класса фрагмента. Он автоматически сохраняет и восстанавливает состояние фрагмента. Его можно использовать как прямую замену AndroidViewBindingComposable. ( b/312895363 , Icf841 )
Изменения в документации
- Обновлена документация по API
OnBackStackChangedListenerс целью уточнения, когда они вызываются и как их следует использовать. ( I0bfd9 )
Обновление зависимости
- Фрагмент теперь зависит от Profile Installer 1.3.1 .
Версия 1.7
Версия 1.7.1
14 мая 2024 г.
Выпущен androidx.fragment:fragment-*:1.7.1 . Версия 1.7.1 содержит следующие коммиты .
Исправления ошибок
- Предиктивный обратный переход теперь будет выполняться только для транзакций, в которых все фрагменты содержат либо Animator, либо Seekable Androidx Transition. Это устраняет проблему, из-за которой отмена частично доступной для поиска транзакции приводила к появлению пустого экрана. ( I43037 , b/339169168 )
Версия 1.7.0
1 мая 2024 г.
Выпущен androidx.fragment:fragment-*:1.7.0 . Версия 1.7.0 содержит следующие коммиты .
Поддержка предиктивных жестов «Назад»
- Фрагменты теперь поддерживают предиктивный возврат в приложении при использовании
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 | Да |
Если вы столкнулись с проблемами с поддержкой предиктивного возврата во Fragments после включения предиктивного жеста возврата , пожалуйста, отправьте запрос в Fragment, приложив пример проекта, воспроизводящего вашу проблему. Вы можете отключить предиктивный возврат, используя FragmentManager.enabledPredictiveBack(false) в методе onCreate() вашей Activity.
FragmentManager.OnBackStackChangedListener() теперь предоставляет onBackStackChangeProgressed() и onBackStackChangeCancelled() для получения прогнозируемых событий обратного хода выполнения и отмены соответственно.
Фрагмент Составить Артефакт
Создан новый артефакт fragment-compose , ориентированный на поддержку приложений, которые находятся в процессе перехода от архитектуры на основе Fragment к архитектуре, полностью основанной на Compose.
Первая функция, доступная в этом новом артефакте, — это метод расширения content в Fragment , который упрощает использование Compose для пользовательского интерфейса отдельного Fragment путем создания 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 содержит следующие коммиты .
Обновление зависимости
- Фрагмент теперь зависит от Profile Installer 1.3.1 .
Версия 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 )
Исправления ошибок
- Исправлена ошибка, из-за которой при выполнении предиктивного жеста «Назад» для фрагмента, не находящегося в контейнере, этот фрагмент никогда не уничтожался. Теперь фрагмент будет немедленно переведен в конечное состояние. ( 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 Fragment выдавал исключение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 для пользовательского интерфейса отдельного Fragment путем создания 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 содержит следующие коммиты.
Уборка
- Удален обходной путь для библиотеки Transition, исправленный в Transition
1.5.0-alpha06. ( I04356 )
Версия 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 ) - Начиная с версии Fragment
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, добавленного в Transition1.5.0-alpha04.
Версия 1.7.0-альфа05
20 сентября 2023 г.
Выпущен androidx.fragment:fragment-*:1.7.0-alpha05 . Версия 1.7.0-alpha05 содержит следующие коммиты.
Новые функции
- Фрагменты теперь поддерживают предиктивный возврат при использовании 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 содержит следующие коммиты.
Исправления ошибок
- Исправлена проблема с фрагментами при использовании предиктивного возврата, из-за которой первый фрагмент в стеке возврата менеджера фрагментов пропускался, а действие завершалось при использовании системного возврата с помощью навигации с помощью трех кнопок или предиктивного жеста возврата. ( 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 . Эта версия разрабатывается во внутренней ветке.
Новые функции
- Фрагменты теперь поддерживают функцию предиктивного возврата в приложении при использовании
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 )
Обновление зависимостей
- Фрагмент теперь зависит от 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через APIrequireComponentDialog(). - Фрагмент теперь зависит от Lifecycle
2.6.1. - Фрагмент теперь зависит от SavedState
1.2.1. - Фрагмент теперь зависит от ProfileInstaller
1.3.0. Артефакт
fragment-testing-manifestотделяет записи манифеста от остальных компонентов тестирования фрагментов. Это позволяет выполнять следующие действия: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через APIrequireComponentDialog(). ( I022e3 , b/234274777 ) - API-интерфейсы фрагментов
commitNow(),executePendingTransactions()иpopBackStackImmediate()были аннотированы@MainThread, что означает, что теперь все они будут выдавать ошибки сборки, если они не вызываются из основного потока, а не будут дожидаться сбоя во время выполнения. ( Ic9665 , b/236538905 )
Исправления ошибок
- Исправлена ошибка в
FragmentManager, из-за которой сохранение и восстановление в одном кадре могло привести к сбою. ( Ib36af , b/246519668 ) - Обратные вызовы
OnBackStackChangedListeneronBackStackChangeStartedи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 )
Обновления зависимостей
- Фрагмент теперь зависит от Lifecycle
2.6.1. ( 586fe7 ) - Фрагмент теперь зависит от SavedState
1.2.1. ( 078e4e ) - Фрагмент теперь зависит от ProfileInstaller
1.3.0. ( 3fc05b )
Версия 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дляonBackStackChangedListenerFragmentManagerтеперь будет выполняться до того, как фрагменты начнут перемещаться в свои целевые состояния. ( 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отделяет записи манифеста от остальных компонентов тестирования фрагментов. Это позволяет выполнять следующие действия:
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 содержит эти коммиты.
Исправления ошибок
- Начиная с версии Fragment
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 )
Обновление зависимости
- Начиная с версии Fragment
1.5.1: библиотека Fragment теперь зависит от Lifecycle2.5.1. ( Id204c ) - Начиная с версии Fragment
1.5.1: библиотека Fragment теперь зависит от Activity1.5.1. ( I10f07 )
Версия 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без сохранения состояния черезCreationExtrasLifecycle2.5.0. - Интеграция диалоговых окон компонентов —
DialogFragmentтеперь используетComponentDialogчерез Activity1.5.0в качестве диалогового окна по умолчанию, возвращаемого функциейonCreateDialog(). - Рефакторинг сохранённого состояния экземпляра — фрагменты начали менять способ сохранения своего состояния экземпляра. Это сделано для того, чтобы чётко определить, какое состояние было сохранено во фрагменте, и его источник. Текущие изменения включают следующее:
-
FragmentManagerтеперь сохраняет свое сохраненное состояние экземпляра вBundle, а не напрямую в пользовательскомParcelable. - Результаты, установленные через
Fragment Result APIs, которые еще не были доставлены, теперь сохраняются отдельно от внутреннего состоянияFragmentManager. - Состояние, связанное с каждым отдельным фрагментом, теперь сохраняется отдельно от внутреннего состояния
FragmentManager, что позволяет сопоставлять объем сохраненного состояния, связанного с отдельным фрагментом, с уникальными идентификаторами, присутствующими в журнале отладкиFragment.
-
Другие изменения
-
FragmentStrictModeтеперь предоставляет возможность частным сторонним фрагментам обходить определенные штрафы за нарушения, используяallowViolation()с именем класса. - API фрагментов для предоставления меню в
ActionBarвашей активности устарели. APIMenuHostиMenuProvider, добавленные в Activity1.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. Это первый шаг в обеспечении дополнительной прозрачности в то, что фактически сохраняется фрагментами. ( 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иMenuProviderAPI, добавленные в действие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-альфа02
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-альфа01
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 содержит эти коммиты.
Новые функции
-
Fragmentтеперь интегрируется с ViewModel CreationExtras, представленным как часть жизненного цикла2.5.0-alpha01. ( I3060b , b/207012585 )
Исправления ошибок
- Из фрагмента
1.4.1:FragmentContainerViewбольше не выбрасывает незаконное исключение состояния, когда идентификаторы просмотра, сгенерированные из XML, имеют отрицательные значения. ( IC185B , B/213086140 ) - Из фрагмента
1.4.1: при использовании пользовательскогоownerProducerLambda с Lazy Functionby 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 ) - При использовании пользовательского
ownerProducerLambda с помощью Lazy Functionby 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>().navControllerFragmentScenarioтеперь реализуетCloseable, позволяя использовать его с помощью методаuseKotlin или 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для коррекции использования жизненного цикла фрагмента в жизненный цикл вида фрагмента при использовании APIaddMenuProviderMenuHost. ( 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.3.6: фрагменты теперь зависят от деятельности1.2.4( i3a66c )
Версия 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, которое произошло бы после вручную восстановив сохраненный задний стек, который содержал несколько транзакций при использовании APIrestoreBackStack()для нескольких поддержки заднего стека. Это также исправило проблему, в которой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.4AOSP/1679887 . Фрагменты теперь правильно обрабатывают группы переходов (либо установленные непосредственно черезtransitionGroup="true", либо косвенно через имяtransitionNameилиbackground), и общие элементы больше не будут бросатьIndexOutOfBoundsExceptions. ( 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 )Класс
ViolationFragmentStrictModeбыл расширен для добавления структурной информации на основе каждого нарушения. Это позволяет вам точно проверить, что вызвало нарушение наряду с нарушением фрагмента ( 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()обнаруживает при использовании устаревшего APIsetUserVisibleHint(). ( #136 , b/153738974 ) -
detectTargetFragmentUsage()обнаруживает при использовании устаревшегоsetTargetFragment(),getTargetFragment()илиgetTargetRequestCode(). ( #139 , b/153737745 )
Изменения API
- Экспериментальный API
FragmentManager.enableNewStateManager(boolean)был удален, и новый менеджер штата теперь является единственным доступным вариантом. ( I90036 , B/162776418 ) -
FragmentScenarioтеперь реализуетCloseable, позволяя использовать его с помощью методаuseKotlin или Try-with-resources . ( #121 , b/143774122 )
Новые чеки на ворс
- Проверка Lint
UseGetLayoutInflaterLint теперь предупреждает при использованииLayoutInflater.from(Context)вDialogFragmentфрагменте - вы всегда должны использовать методgetLayoutInflater(), чтобы получить соответствующий дляLayoutInflater. ( #156 , b/170781346 ) - Проверка Lint
DialogFragmentCallbacksDetectorтеперь предупреждает при вызове методаsetOnCancelListenerилиsetOnDismissListenerв методеDialogFragmentonCreateDialog()- эти слушатели принадлежат самимDialogFragment, и вы должны переопределитьonCancel()иonDismiss(), чтобы получить эти вызовы. ( #171 , b/181780047 , b/187524311 )
Исправления ошибок
- Из фрагмента 1.3.4 : Исправлена регрессия, введенная в фрагменте
1.3.3при использовании APIViewTreeViewModelStoreOwner.get()сViewModelProviderили JetPack Compose Method ofviewModel()внутри фрагмента. Эти варианты использования теперь правильно используют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 )
Внешний вклад
- Спасибо Simonschiller за то, что он заработал
FragmentScenarioCloseable. ( #121 , b/143774122 ) - Спасибо Simonschiller за добавление всего API
FragmentStrictModeдля этого релиза! ( #123 , #131 , #150 , b/143774122 , #142 , b/153738653 , #141 , b/153738235 , #146 , b/181137036 , #140 , b/15373777 , # 136 , b/ 153738974, #1395 ). - Спасибо Tatocaster за добавление проверки Lint -Lint
UseGetLayoutInflater. ( #156 , b/170781346 ) - Спасибо Tatocaster за добавление проверки Lint
DialogFragmentCallbacksDetector. ( #171 , b/181780047 )
Версия 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.6: фрагменты теперь зависят от деятельности1.2.4( i3a66c )
Версия 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.4AOSP/1679887 . Фрагменты теперь правильно обрабатывают группы переходов (либо установленные непосредственно черезtransitionGroup="true", либо косвенно через имяtransitionNameилиbackground), и общие элементы больше не будут бросатьIndexOutOfBoundsExceptions. ( 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при использовании APIViewTreeViewModelStoreOwner.get()сViewModelProviderили JetPack Compose Method ofviewModel()внутри фрагмента при использовании рукояти. Эти варианты использования теперь правильно используют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
InvalidFragmentVersionForActivityResultlint 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. Версия 1.3.1 содержит эти коммиты.
Новые функции
- Dialogs within a
DialogFragmentcan now get access to ViewTree owners through their DecorView, ensuring thatDialogFragmentcan be used withComposeView. ( Ib9290 , b/180691023 )
Исправления ошибок
- Fragments inflated into an already
RESUMEDactivity using FragmentContainerView are now properly shown after a configuration change. ( Ie14c8 , b/180538371 ) - There is no longer an extra
}at the end of the fragmenttoString()( I54705 , b/177761088 ) - Overridden methods in FragmentActivity now properly inherit the base method javaDoc ( I736ce , b/139548782 )
- The docs for
setFragmentResultandsetFragmentResultListenerhave 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
onCreateOptionsMenuwhen 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 toRESUMED( I452ac , ( I9fa49 )
Обновления зависимости
- Fragment 1.3.1 depends on Activity
1.2.1. ( I557b9 )
Версия 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
FragmentManagerhas 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
ActivityResultRegistryAPI introduced in Activity1.2.0to handlestartActivityForResult()+onActivityResult()as well asrequestPermissions()+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 aFragmentActivityorAppCompatActivity.
- 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
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 leastSTARTED. The target fragment APIs have been deprecated in favor of these new APIs. See Get Results using the Fragment Result API .FragmentOnAttachListener: TheonAttachFragment()callback onFragmentActivityandFragmenthave been deprecated. A newFragmentOnAttachListenerhas been added to provide a more flexible alternative, allowing delegation ofonAttachFragment()to separate, testable listeners and support for adding a listener to FragmentManagers other than your direct child FragmentManager.FragmentScenarioImprovements : TheFragmentScenarioclass from thefragment-testingartifact has been rewritten in Kotlin and has received a number of improvements:-
FragmentScenarionow usessetMaxLifecycle()to implementmoveToState(), ensuring consistent behavior on all API levels and decoupling the Fragment's state from the underlying Activity. -
FragmentScenarionow supports setting an initialLifecycle.Stateto support asserting the fragment's state before moving to eachLifecycle.Statefor the first time. - There is now an alternative to the
FragmentScenarioAPI ofonFragmentin the form of the Kotlin reified extension methodwithFragmentthat allows you to return a value. Notably, it rethrows exceptions raised in the given block.
-
ViewTreeSupport :Fragmentnow supports theViewTreeLifecycleOwner.get(View),ViewTreeViewModelStoreOwner.get(View), andViewTreeSavedStateRegistryOwnerAPIs added in Lifecycle2.3.0and SavedState1.1.0such that it will return the Fragment as theViewModelStoreOwner, and aSavedStateRegistryOwnerandLifecycleOwnertied to the fragment's view Lifecycle when using aViewwithin aFragment.TRANSIT_animation changes : The fragment default effects,TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, andTRANSIT_FRAGMENT_FADE, now useAnimatorinstead ofAnimation. The resources used to build these animators are now private.setRetainInstance()deprecation : ThesetRetainInstance()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 theViewModeland theonCleared()callback it receives).ViewPager 1 adapter deprecation : With the release of ViewPager2
1.0.0, theFragmentPagerAdapterandFragmentStatePagerAdapterclasses for interacting withViewPagerhave 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
DialogFragmentwould appear above a childDialogFragmentafter a configuration change; child dialog fragments now always appear above a parent dialog fragment. ( I30806 , b/177439520 ) - Fixed issue where doing a
hideoperation with anAnimationwould 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
Lifecyclenow properly handles cases where the Fragment's view is destroyed before theLifecyclereachesCREATED, avoiding exceptions stating “no event down from INITIALIZED”. ( eda2bd , b/176138645 ) - Fragments that use an
Animatornow appear in the proper order when usingFragmentContainerView. ( 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. Версия 1.3.0-RC01 содержит эти коммиты.
Исправления ошибок
-
onPrepareOptionsMenu()now follows the same logic asonCreateOptionsMenu()and is no longer called when a parent fragment callssetMenuVisibility(false). ( Id7de8 , b/173203654 )
New State Manager Bug Fixes
- Fixed leak and visual artifact when adding a fragment with an
Animationto aFragmentContainerViewand 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()oronViewCreated()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 )
Версия 1.3.0-бета02
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.
Новые функции
-
FragmentScenariohas been fully converted to Kotlin while maintaining source and binary compatibility via usage of Kotlin 1.4's functional interfaces forFragmentAction. ( I19d31 )
Изменения поведения
- FragmentContainerViews that do not inflate a fragment using the
classorandroid:nameattribute can now be used outside of aFragmentActivity. ( Id4397 , b/172266337 ) - Attempting to set the max lifecycle of a fragment to
DESTROYEDwill now throw anIllegalArgumentException( Ie7651 , b/170765622 ) - Initializing a FragmentScenario with a
DESTROYEDstate will now throw anIllegalArgumentException( 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
Animatoror one of theTRANSIT_FRAGMENT_options. ( I92426 , b/169874632 ) - Fixed an issue that prevented fragments with an exiting
Animationfrom 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
Animatorof ahide()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 )
Внешний вклад
-
FragmentFactorynow caches fragment classes separately for differentClassLoaderinstances. Thanks Simon Schiller! ( #87 , b/113886460 )
Версия 1.3.0-бета01
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. Версия 1.3.0-бета01 содержит эти коммиты.
Новые функции
-
setMaxLifecycle()now supports setting theLifecyclestate toINITIALIZINGas long as the fragment has not been moved toCREATED. ( b/159662173 )
Изменения API
- Upgrade androidx to use Kotlin 1.4 ( Id6471 , b/165307851 , b/165300826 )
Изменения поведения
- 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()toCREATEDnow 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
FragmentManagerand fragments with a non-nullFragmentManagerwill always be considered active. ( aosp/1422346 ) - The fragment default effects,
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, andTRANSIT_FRAGMENT_FADE, now useAnimatorinstead ofAnimation. ( 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
INVISIBLEbefore the animation begins, it will actually stay invisible. ( b/164481490 ) - Fragments now prioritize
AnimatorsoverAnimations, meaning a fragment with both will only run theAnimatorand ignore theAnimation. ( 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
replaceoperation 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
Animationwould override allTransitioneffects or anAnimatorand aTransitionon an individual fragment would both run. ( b/149569323 ) - The
enterTransitionandexitTranstionof 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
CREATEDstate but instead move toSTARTEDwith other fragments. ( b/129035555 ) - Fixed an issue where
FragmentManagerwould 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 )
-
FragmentManagernow returns the correct fragments when callingfindFragmentById()orfindFragmentByTag()from within theonAttachFragment()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
Transitionand AndroidXTransitioninstances now mentions the fragment with the invalid transition. ( b/155574969 )
Изменения поведения
- You can now call
launch()on anActivityResultLauncherin theonCreate()lifecycle method of a fragment. ( b/161464278 ) - Calling
registerForActivityResult()afteronCreate()now throws an exception indicating that this is not allowed rather than silently failing to deliver results after a configuration change. ( b/162255449 ) -
FragmentActivitynow uses theOnContextAvailableListenerAPI introduced in Activity1.2.0-alpha08to restore the state of theFragmentManager. Any listeners added to subclasses ofFragmentActivitywill run after this listener. ( I513da )
Исправления ошибок
-
ActivityOptionspassed through when usingstartIntentSenderForResult()are now respected. ( b/162247961 )
Известная проблема
- When using the new state manager, directly setting the visibility of the fragment's root view after
onViewCreated()and beforeonResume()results in the visibility you set being overridden byFragmentManager, who controls the visibility of the root view. As a workaround, you should always use thehide()andshow()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.
Новые функции
-
FragmentScenarionow supports setting an initial Lifecycle state ofCREATED,STARTED, orRESUMEDrather than always moving the Fragment to theRESUMEDstate. ( b/159662750 ) - Added an alternative to the
FragmentScenarioAPI ofonFragmentin the form of the Kotlin reified extension methodwithFragmentthat allows you to return a value. Notably, it rethrows exceptions raised in the given block. ( b/158697631 )
Изменения поведения
-
FragmentScenarionow usessetMaxLifecycle()to implementmoveToState(), ensuring consistent behavior on all API levels and decoupling the Fragment's state from the underlying Activity. ( b/156527405 ) - The
SavedStateRegistryOwnerreturned byViewTreeSavedStateRegistryOwneris 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
clearFragmentResultListenernow 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 onFragmentActivityandFragmenthave been deprecated. A newFragmentOnAttachListenerhas been added to provide a more flexible alternative, allowing delegation ofonAttachFragment()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
DialogFragmentwould show anotherDialogFragmentas a child fragment. ( b/157195715 ) - Fixed an issue where the
UseRequireInsteadOfGetLint 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.
Новые функции
- Added support for
ViewTreeViewModelStoreOwnerfrom Lifecycle2.3.0-alpha03, andViewTreeSavedStateRegistryOwnerfrom SavedState1.1.0-alpha01when using aViewwithin aFragment. ( aosp/1297993 , aosp/1300264 )
Изменения API
- The
setFragmentResult()andsetFragmentResultListener()APIs now take a non-nullBundleandFragmentResultListener, respectively. To explicitly clear a previously set result or listener, use the newclearFragmentResult()andclearFragmentResultListener()methods. ( b/155416778 ) - The
setFragmentResultListener()Kotlin extensions that take a lambda are now marked asinline. ( b/155323404 )
Изменения поведения
- The previously deprecated
startActivityForResult(),startIntentSenderForResult(), andrequestPermissionsonFragmentnow internally useActivityResultRegistry, thus removing the restriction on using only the lower bits (below0xFFFF) for your request codes when using those APIs. ( b/155518741 )
Обновления документации
- Expanded the documentation on the
Fragment(@LayoutRes int)andDialogFragment(@LayoutRes int)constructors to clarify that they should be called from your subclasses' no argument constructor when using the defaultFragmentFactory. ( 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 leastSTARTED. ( 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()andrequestPermissions()/onRequestPermissionsResult()APIs on Fragment have been deprecated. Please use the Activity Result APIs . ( aosp/1290887 ) - Breaking change from Activity
1.2.0-alpha04: theprepareCall()method has been renamed toregisterForActivityResult(). ( aosp/1278717 )
Исправления ошибок
- The fragment's
getViewLifecycleOwner()is now stopped beforeonSaveInstanceState()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
illegalStateExceptionwhen adding a fragment to aDialogFragment's view hierarchy withFragmentContainerView. ( 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
prepareCallmethods onFragmentare nowfinal. ( b/152439361 )
Исправления ошибок
- Fixed a regression introduced in Fragment
1.3.0-alpha02when usingBottomSheetDialogFragment. ( b/151652127 , aosp/1263328 , aosp/1265163 ) - Fixed a crash when using
prepareCallfrom 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 theFragmentLiveDataObserveLint rule onDialogFragmentclasses as their lifecycle and view lifecycle are always in sync, making it safe to use eitherthisorviewLifecycleOwnerwhen callingobserve. ( b/151765086 )
Dependency Changes
- Fragments depend on Activity
1.2.0-alpha03, which had significant improvements to the Activity Result API introduced in Activity1.2.0-alpha02.
Версия 1.3.0-Alpha02
March 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. Версия 1.3.0-Alpha02 содержит эти коммиты.
Новые функции
- Added support for the
ActivityResultRegistryAPI introduced in Activity1.2.0-alpha02to handle thestartActivityForResult()+onActivityResult()as well asrequestPermissions()+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
-
DialogFragmentnow provides a constructor that takes a@LayoutResthat indicates the layout thatonCreateView()should inflate by default. ( b/150327080 ) - The
onActivityCreated()method is now deprecated. Code touching the fragment's view should be done inonViewCreated()(which is called immediately beforeonActivityCreated()) and other initialization code should be inonCreate(). To receive a callback specifically when the activity'sonCreate()is complete, aLifeCycleObservershould be registered on the activity'sLifecycleinonAttach(), and removed once theonCreate()callback is received. ( b/144309266 )
Исправления ошибок
- From Fragment
1.2.3: Fixed a bug inDialogFragmentthat caused aStackOverflowErrorwhen callinggetLayoutInflater()from withinonCreateDialog(). ( 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 theUseRequireInsteadOfGetLint check when using a local variable name that shadowed the Kotlin property name. ( b/149891163 ) - From Fragment
1.2.3:FragmentContainerViewno longer throws anUnsupportedOperationExceptionfor using the incorrect constructor in layout preview. ( b/149707833 )
Известные проблемы
-
BottomSheetDialogFragmentno 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. Версия 1.3.0-Alpha01 содержит эти коммиты.
Новые функции
- Added support for the
ViewTreeLifecycleOwner.get(View)API added in Lifecycle2.3.0-alpha01such that it will return the Fragment'sviewLifecycleOwneras theLifecycleOwnerfor any Views returned byonCreateView(). ( aosp/1182955 )
Изменения 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 theViewModeland theonCleared()callback it receives). ( b/143911815 ) - With the release of ViewPager2
1.0.0, theFragmentPagerAdapterandFragmentStatePagerAdapterclasses for interacting withViewPagerhave been deprecated. See Migrate from ViewPager to ViewPager2 . ( b/145132715 )
Исправления ошибок
- Fragment ProGuard rules now correctly only keep the default constructors
Fragmentclasses that are used rather than for allFragmentinstances, fixing a regression introduced in Fragment1.2.1. ( b/149665169 - The
require___()Lint rules added in Fragment1.2.2no longer false positive on local variables that share the same name as the shadowed Kotlin property names (ie,view). ( b/149891163 ) -
FragmentContainerViewno longer throws anUnsupportedOperationExceptionwhen 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 )
Version 1.2.5
Version 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 beforeonSaveInstanceState()is called, mirroring the behavior of the fragment's lifecycle. This was previously released in Fragment1.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 Fragment1.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
FragmentLiveDataObserveLint rule onDialogFragmentclasses as their lifecycle and view lifecycle are always in sync, making it safe to use eitherthisorviewLifecycleOwnerwhen callingobserve. ( b/151765086 )
Версия 1.2.3
Версия 1.2.3
March 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
DialogFragmentthat caused aStackOverflowErrorwhen callinggetLayoutInflater()from withinonCreateDialog(). ( 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
UseRequireInsteadOfGetLint check when using a local variable name that shadowed the Kotlin property name. ( b/149891163 ) -
FragmentContainerViewno longer throws anUnsupportedOperationExceptionfor 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
viewLifecycleOwneras theLifecycleOwnerto calls intoOnBackPressedDispatcherinonCreateView(),onViewCreated(), andonActivityCreated(). ( b/142117657 ) - Added a new Lint check that confirms that you are using the correct
debugImplementationwhen using thefragment-testingartifact. ( b/141500106 ) - Fragments now suggest using the associated
require___()methods for more descriptive error messages instead ofcheckNotNull(get___()),requireNonNull(get___()), orget___()!!for all of the Fragment APIs that include both agetandrequireequivalent. ( aosp/1202883 )
Исправления ошибок
- Fixed the Fragment ProGuard files to avoid R8 warnings ( b/148963981 )
- Improved the existing Lint check suggesting using
viewLifecycleOwnerwhen usingobserveto also handle thelivedata-ktxextension method version ofobserve. ( b/148996309 ) - Fixed the formatting for many of the Lint checks ( aosp/1157012 )
Внешние взносы
- Thanks to Zac Sweers for contributing the
require___()Lint checks on behalf of Slack! ( aosp/1202883 )
Версия 1.2.1
Версия 1.2.1
February 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 .
Bug fixes
- Fragments added via the
addandreplacemethods that take aClassinstance (or the Kotlin reified versions) now have their default constructor kept by ProGuard. ( b/148181315 ) -
FragmentStatePagerAdapterandFragmentPagerAdapterno longer catch exceptions thrown byFragmentManagerwhen runningfinishUpdate(). ( 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 toonInflate()beforeonCreate()when in the layout. ( aosp/1215856 ) - Calling
toString()on aFragmentManagerinstance no longer throws aNullPointerExceptionwhen the Activity is already destroyed. ( b/148189412 )
Dependency changes
- Fragments
1.2.1now depends on Lifecycle ViewModel SavedState2.2.0.
Версия 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
FragmentContainerViewis the strongly recommended container for dynamically added Fragments, replacing usage ofFrameLayoutor other layouts. It also supports the sameclass,android:name, and optionalandroid:tagas the<fragment>tag, but uses a normalFragmentTransactionto 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 Transition1.3.0) to complete before callingonDestroyView(). - Class based
add()andreplace(): Added new overloads ofadd()andreplace()onFragmentTransactionthat take aClass<? extends Fragment>and optionalBundleof arguments. These methods use yourFragmentFactoryto 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 tofragment-ktx. - Lifecycle ViewModel SavedState Integration :
SavedStateViewModelFactoryis now the default factory used when usingby viewModels(),by activityViewModels(), theViewModelProviderconstructor, orViewModelProviders.of()with a Fragment. - New Lint checks : Added a new Lint check that ensures you are using
getViewLifecycleOwner()when observingLiveDatafromonCreateView(),onViewCreated(), oronActivityCreated(). -
getFragmentManager()deprecation : ThegetFragmentManager()andrequireFragmentManager()methods on Fragment have been deprecated and replaced with a singlegetParentFragmentManager()method, which returns the non-nullFragmentManagerthe Fragment is added to (you can useisAdded()to determine if it is safe to call). -
FragmentManager.enableDebugLogging()deprecation : The staticFragmentManager.enableDebugLoggingmethod has been deprecated. FragmentManager now respectsLog.isLoggable()for the tagFragmentManager, allowing you to enable eitherDEBUGorVERBOSElogging without re-compiling your app.
Известные проблемы
- Fragments referenced only via the
classorandroid:nameattribute on aFragmentContainerVieware not kept by ProGuard automatically, requiring that you manually add a keep rule for each fragment class. ( b/142601969 ) - When adding a
NavHostFragmentusingclassorandroid:namein XML withFragmentContainerView, you cannot usefindNavController()inonCreate()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 .
Bug fixes
- Fixed a regression in Fragment
1.2.0-rc04when using the<fragment>tag which causedonViewCreated()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 toCREATEDeven 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 .
Bug fixes
- Adjusted the animations for
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE, andTRANSIT_FRAGMENT_FADEto 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 .
Bug fixes
- 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
INVISIBLEafter 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()andgetFragmentFactory()to better indicate that setting aFragmentFactorywill also affect child FragmentManagers. ( aosp/1170095 )
Dependency changes
- Fragments now depends on Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03, and Activity1.1.0-rc03.
Версия 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 .
Bug fixes
- When in Kotlin, the LintFix for using
getViewLifecycleOwner()when observingLiveDatafromonCreateView(),onViewCreated(), oronActivityCreated()(introduced in Fragment1.2.0-rc01) now uses the Kotlin property access syntaxviewLifecycleOwnerinstead ofgetViewLifecycleOwner(). ( aosp/1143821 )
Версия 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 .
Новые функции
-
FragmentContainerViewnow supports theclassattribute in addition toandroid:name, mirroring the functionality of the<fragment>tag. ( b/142722242 ) - Added a new Lint check that ensures you are using
getViewLifecycleOwner()when observingLiveDatafromonCreateView(),onViewCreated(), oronActivityCreated(). ( b/137122478 )
Bug fixes
- The
onDismissandonCancelcallbacks onDialogFragmentnow guarantee that theDialogInterfacepassed to them is non-null and thatgetDialog()returns non-null when they are executed. ( b/141974033 ) -
FragmentContainerViewnow adds the Fragment defined byclassorandroid:nameas part of inflation, ensuring thatfindFragmentById()andfindFragmentByTag()work immediately afterwards. ( b/142520327 ) - Fixed an
IllegalStateExceptioninFragmentContainerViewdue to the state being saved. ( b/142580713 ) - Fixed an
UnsupportedOperationExceptioninFragmentContainerViewwhen theFragmentContainerViewclass is obfuscated. ( b/142657034 )
Известные проблемы
- Fragments referenced only via the
classorandroid:nameattribute on aFragmentContainerVieware 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 toFragmentContainerViewuntil this is fixed viaaapt2. ( b/142601969 )
Версия 1.2.0-бета02
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 .
Bug fixes
- Fixed an issue where Fragment's
onInflate()did not receive proper attributes fromFragmentContainerView, breaking cases such asNavHostFragment. ( b/142421837 )
Версия 1.2.0-бета01
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 .
Новые функции
-
FragmentContainerViewadds support for adding an initial fragment with added support for theandroid:nameand optionalandroid:tagXML attributes. Unlike the<fragment>tag,FragmentContainerViewuses a normalFragmentTransactionunder the hood to add the initial fragment, allowing furtherFragmentTransactionoperations on theFragmentContainerViewand 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>withFragmentContainerView. ( b/139830056 )
Bug fixes
- Fixed a
ClassCastExceptionwhen usingandroidx.transition. ( b/140680619 ) - When using Transition
1.3.0-beta01, Fragments now wait forandroidx.transitiontransitions (in addition to framework transitions and animations, which were fixed in Fragment1.2.0-alpha03and Fragment1.2.0-alpha02, respectively) to finish before dispatchingonDestroyView(). ( aosp/1119841 ) - When using Transition
1.3.0-beta01, Fragments now properly cancelandroidx.transitiontransitions before starting new transitions / animations on the same container. ( aosp/1119841 ) - Fixed an issue on API 17 and lower when using
androidx.transitiontransitions on the root view of your Fragment when usingFragmentContainerView. ( b/140361893 ) - The
fragment-testingartifact now depends on AndroidX Test1.2.0, fixing an incompatibility with the latest Espresso 3.2.0. ( b/139100149 ) - Removed usage of
Log.win FragmentManager. ( aosp/1126468 )
Известные проблемы
- Fragment's
onInflate()do not receive proper attributes fromFragmentContainerView, breaking cases such asNavHostFragment. ( b/142421837 )
Версия 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 changes
- The
getFragmentManager()andrequireFragmentManager()methods onFragmenthave been deprecated and replaced with a singlegetParentFragmentManager()method, which returns the non-nullFragmentManagerthe Fragment is added to (you can useisAdded()to determine if it is safe to call). ( b/140574496 ) - The static
FragmentManager.enableDebugLoggingmethod has been deprecated. FragmentManager now respectsLog.isLoggable()for the tagFragmentManager, allowing you to enable eitherDEBUGorVERBOSElogging without re-compiling your app. ( aosp/1116591 )
Bug fixes
- 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
September 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 changes
-
FragmentContainerViewis nowfinal. ( b/140133091 )
Bug fixes
-
FragmentContainerViewnow 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 dispatchingonDestroyView(). ( b/138741697 )
Версия 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 .
Новые функции
-
SavedStateViewModelFactoryis now the default factory used when usingby viewModels(),by activityViewModels(), theViewModelProviderconstructor, orViewModelProviders.of()with aFragment. ( b/135716331 ) - The default animations when using
TRANSIT_FRAGMENT_OPEN,TRANSIT_FRAGMENT_CLOSE,TRANSIT_FRAGMENT_FADEwithsetTransitionon aFragmentTransactionhave been updated to match the animations used by activities on Android 10 devices. ( aosp/1012812 , aosp/1014730 )
API changes
- Introduces
FragmentContainerViewas the strongly recommended container for dynamically added Fragments, replacing usage ofFrameLayout, 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 infragment-ktx. ( aosp/1090757 ) - Added new overloads of
add()andreplace()onFragmentTransactionthat take aClass<? extends Fragment>and optionalBundleof arguments. These methods use yourFragmentFactoryto 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 tofragment-ktx. ( b/126124987 ) -
@MainThreadannotations have been added toFragmentlifecycle callbacks. ( b/127272564 ) - The breadcrumb title related APIs on
FragmentTransactionandFragmentManager.BackStackEntryhave been deprecated. ( b/138252944 ) - The
setTransitionStylemethod onFragmentTransactionhas been deprecated. ( aosp/1011537 ) - Many of the methods in
FragmentManagerare no longerabstract.FragmentManageritself remainsabstractand should not be directly instantiated or extended; you should continue to only get an existing instance fromgetSupportFragmentManager(),getChildFragmentManager(), etc.
Bug fixes
- 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 callingpostponeEnterTransition()with a timeout more than once would not cancel previous timeouts. ( b/137797118 ) - From Fragment
1.1.0-rc02: Fixed a crash inFragmentPagerAdapterandFragmentStatePagerAdapterwhen 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
NullPointerExceptionwhen using shared element transitions and combining a pop and add operation. ( b/120507394 ) - Added a workaround to
IllegalStateExceptions when usingFragmentPagerAdapterandFragmentStatePagerAdapterin Robolectric tests. ( b/137201343 )
Version 1.2.0-alpha01
July 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 callingonViewCreated(), ensuring that your view always has the correct insets. ( b/135945162 )
Bug fixes
- Fixed a
NullPointerExceptionwhen popping aFragmentTransactionthat usedsetPrimaryNavigationFragment()beforereplace(). ( b/134673465 )
Версия 1.1.0
Версия 1.1.0
September 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-testingartifact provides aFragmentScenarioclass for testing a fragment in isolation. See Test your app's fragments documentation for more details. - FragmentFactory : You can now set a
FragmentFactoryon aFragmentManagerto manage the creation of fragment instances, removing the strict requirement to have a no-argument constructor. - Kotlin Property Delegates for ViewModels : The
fragment-ktxartifact now contains two Kotlin property delegates:by viewModels()for accessing ViewModels associated with the individual fragment andby 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 aFragmentTransaction. This replaces the now deprecatedsetUserVisibleHint().FragmentPagerAdapterandFragmentStatePagerAdapterhave a new constructor that allows you to switch to the new behavior. - FragmentActivity LayoutId constructor : Subclasses of
FragmentActivitycan now optionally call into a constructor onFragmentActivitythat takes anR.layoutID, indicating the layout that should be set as the content view as an alternative to callingsetContentView()inonCreate(). This does not change the requirement that your subclass have a no-argument constructor. - Fragment LayoutId constructor : Subclasses of
Fragmentcan now optionally call into a constructor onFragmentthat takes anR.layoutID, indicating the layout that should be used for this fragment as an alternative to overridingonCreateView(). The inflated layout can be configured inonViewCreated(). - 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 .
Bug fixes
- 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 .
Bug fixes
- 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 .
Bug fixes
- Fixed a crash in
FragmentPagerAdapterandFragmentStatePagerAdapterwhen removing the current item. ( b/137209870 )
Версия 1.1.0-RC01
July 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 .
Bug fixes
- Fragments now properly update their visibility when using
show()orhide()operations while the transition is running. ( b/133385058 ) - Fixed a
NullPointerExceptionwhen popping aFragmentTransactionthat usedsetPrimaryNavigationFragment()beforereplace(). ( b/134673465 )
Версия 1.1.0-beta01
June 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 .
Bug fixes
-
androidx.lifecycle.Lifecyclecallbacks (specifically related toSTARTED,RESUMED,PAUSED,STOPPED, andDESTROYED) for nested Fragments are now properly nested. ( b/133497591 ) -
OnBackPressedCallbackinstances registered in a Fragment'sonCreate()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 changes
- Fragments now receive a callback to a new
onPrimaryNavigationFragmentChanged(boolean)method when the primary navigation fragment changes. aosp/960857
Bug fixes
- 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 callstartPostponedEnterTransition()b/120803208
API changes
- Breaking change: the previously deprecated
FragmentFactoryinstantiatemethod that took aBundlehas been removed. aosp/953856 - Breaking change: The
RESUME_ONLY_CURRENT_FRAGMENTandUSE_SET_USER_VISIBLE_HINTconstants inFragmentPagerAdapterandFragmentStatePagerAdapterhave been renamed toBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENTandBEHAVIOR_SET_USER_VISIBLE_HINT, respectively. aosp/954782
Bug fixes
- 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 aFragmentTransaction. This replaces the now deprecatedsetUserVisibleHint().FragmentPagerAdapterandFragmentStatePagerAdapterhave a new constructor that allows you to switch to the new behavior. ( b/129780800 )
Изменения API
-
moveToState(STARTED)onFragmentScenariocan 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).
Bug fixes
- Fixed an issue when using a
<fragment>tag in XML and thecontentLayoutIdconstructor ofFragmentActivityorAppCompatActivity. ( b/129907905 ) - Corrected an issue where fragments on the back stack would not be moved to at least
CREATEDafter a configuration change, causing ViewModels and child retained fragments to not be properly disposed. ( b/129593351 ) - Fixed a crash in
restoreSaveStatecaused by a desync of the retained fragments after the instance state is saved. ( b/130433793 ) ( aosp/947824 ) - Fixed issues where an
OnBackPressedCallbackadded with a fragment lifecycle would not be called if theFragmentManagerhad a back stack. See androidx.activity 1.0.0-alpha07 for more details. ( aosp/948209 ) - Fragments no longer enforce
LAYER_TYPE_HARDWAREfor 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
-
FragmentandFragmentActivitynow 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
instantiatemethod that takes an argument Bundle has been deprecated and apps should use the newinstantiateoverload that does not take a Bundle. ( b/128836103 ) -
FragmentScenariomethods are now properly annotated with@StyleRes. ( aosp/924193 ) -
FragmentTabHosthas been deprecated. ( b/127971835 ) - FragmentActivity's
getThemedContext()has been removed. ( aosp/934078 )
Bug fixes
- 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
@ContentViewconstructors 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
March 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 .
Новые функции
-
@ContentViewannotation lookups are now cached ( b/123709449 )
Изменения поведения
- Calling
remove(),hide(),show(),detach(), andsetPrimaryNavigationFragment()with a Fragment attached to a different FragmentManager now throws anIllegalStateExceptionrather than silently failing ( aosp/904301 )
Bug fixes
-
onNewIntentforFragmentActivityis now correctly marked with@CallSuper( b/124120586 ) - Fixed an issue where
DialogFragment'sonDismiss()could be called twice when usinggetDialog().dismiss()orgetDialog().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
@ContentViewclass annotation that allows you to indicate which layout XML file should be inflated as an alternative to overridingonCreateView(). It is recommended to do view related work inonViewCreated(). ( aosp/837619 ) -
fragment-testingnow depends onandroidx.test:core-ktx1.1.0 stable ( b/121209673 ) - You can now use
openActionBarOverflowOrOptionsMenuwithFragmentScenarioto test Fragment hosted options menus ( b/121126668 )
API changes
- Added a
requireArguments()method which returns a@NonNull Bundleor throws anIllegalStateException( b/121196360 ) - Added a note that
getLifecycle(),getViewLifecycleOwner(), andgetViewLifecycleOwnerLiveData()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 )
Bug fixes
- Target fragments are correctly cleared out when you pass
nulltosetTargetFragment(). ( 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 )
Версия 1.1.0-Alpha03
17 декабря 2018 г.
Новые функции
- Fragment now implements
BundleSavedStateRegistryOwnerand depends on the newly released SavedState library [ aosp/824380 ] - A
by activityViewModelsKotlin property delegate has been added to retrieve ViewModels associated with the containing Activity [ b/119050253 ] - The
by viewModelsKotlin property delegate has been expanded to take an optional lambda method for getting theViewModelStoreOwner, allowing you to pass in the parent Fragment or other customViewModelStoreOwnerwith code such asval viewModel: MyViewModel by viewModels(::requireParentFragment)[ b/119050253 ]
API changes
-
FragmentScenarionow allows you to specify a theme such asTheme.AppCompat[ b/119054431 ]. This is a breaking change. - Added a
requireView()method which returns a@NonNull Viewor throws anIllegalStateException[ b/120241368 ] - Added a
requireParentFragment()method which returns a@NonNull Fragmentor throws anIllegalStateException[ b/112103783 ]
Bug fixes
- 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
Lifecycleobject if re-added [ b/118880674 ]
Версия 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
FragmentFactoryinstance. ( aosp/812913 )
Bug fixes
- Fixed an IllegalStateException when using nested Fragments on the back stack ( b/119256498 )
- Fixed crash when using
FragmentScenario.recreate()with aFragmentFactory( aosp/820540 ) - Fixed an issue where target Fragments were not accessible after the Fragment was removed ( aosp/807634 )
Версия 1.1.0-альфа01
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
FragmentFactoryon anyFragmentManagerto 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 changes
- Significantly expanded the nullability annotations across the Fragment API surface.
Bug fixes
- 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-testingdepends onandroidx.test:core:1.0.0-beta01instead of the correctandroidx.test:core:1.0.0.