Фрагмент
Последнее обновление | Стабильный выпуск | Кандидат на выпуск | Бета-версия | Альфа-релиз |
---|---|---|---|---|
30 октября 2024 г. | 1.8.5 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от Fragment, вы должны добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .
Добавьте зависимости для нужных вам артефактов в файл build.gradle
для вашего приложения или модуля:
классный
dependencies { def fragment_version = "1.8.4" // 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.4" // 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.5
30 октября 2024 г.
Выпущен androidx.fragment:fragment-*:1.8.5
. Версия 1.8.5 содержит эти коммиты .
Исправления ошибок
- Исправлено исключение
IllegalStateException
вызываемоеsaveBackStack
только после того, как жест Predictive Back был отменен или прерван. ( I3387d , б/342419080 )
Версия 1.8.4
2 октября 2024 г.
Выпущен androidx.fragment:fragment-*:1.8.4
. Версия 1.8.4 содержит эти коммиты .
Исправления ошибок
- Исправлена проблема, из-за которой быстрое нажатие кнопки возврата системы или быстрое выполнение жеста назад приводило к сбою Fragments при использовании Androidx Transitions. ( Ibc038 , б/364804225 )
- Исправлена проблема с фрагментами, из-за которой прерывание прогнозируемого жеста возврата приводило к переводу диспетчера фрагментов в неопределенное состояние и даже к отображению неправильного фрагмента. ( If82e2 , b/338624457 )
- Исправлено исключение
UninitializedPropertyAccessException
вAndroidFragment
при динамической замене класса, который использует ваш экземплярAndroidFragment
. ( I12dea )
Версия 1.8.3
4 сентября 2024 г.
Выпущен androidx.fragment:fragment-*:1.8.3
. Версия 1.8.3 содержит эти коммиты .
Исправления ошибок
-
FragmentManager
теперь правильно учитывает ожидающие операции при обработке жеста Predictive Back. Это должно гарантировать, что возврат системы больше не будет вызывать исключениеIndexOutOfBoundsException
. ( I9ba32 , б/342316801 ) -
AndroidFragment
больше не аварийно завершает работу, если он добавляется в композицию, когда состояние содержащего его действия/фрагмента уже сохранено. ( I985e9 , б/356643968 )
Версия 1.8.2
24 июля 2024 г.
androidx.fragment:fragment-*:1.8.2
выпущен. Версия 1.8.2 содержит эти коммиты .
Исправления ошибок
-
AndroidFragment
теперь правильно обрабатывает случаи, когда родительский фрагмент помещается в задний стек фрагмента, избегая проблем с сообщением «Не найдено представление для идентификатора» при возврате к этому фрагменту. ( I94608 ) - Фрагменты, добавленные с помощью метода
FragmentTransaction.add
, который принимаетViewGroup
теперь ждутonContainerAvailable
прежде чем перейти кonStart()
. Это влияет на пользователей этого API, таких какAndroidFragment
, который теперь ожидает, покаAndroidFragment
повторно введет композицию, прежде чем перемещать ее черезonStart()
. ( I94608 )
Версия 1.8.1
26 июня 2024 г.
androidx.fragment:fragment-*:1.8.1
выпущен. Версия 1.8.1 содержит эти коммиты .
Исправления ошибок
- Исправлена проблема, из-за которой фрагменты без контейнера немедленно
DESTROYED
при запуске интеллектуального жеста назад. Теперь они удерживаются в состоянииCREATED
до завершения жеста. ( If6b83 , b/345244539 )
Версия 1.8.0
12 июня 2024 г.
Выпущен androidx.fragment:fragment-*:1.8.0
. Версия 1.8.0 содержит эти коммиты .
Важные изменения с версии 1.7.0
- Артефакт
fragment-compose
теперь содержитAndroidFragment
Composable
, который позволяет добавлять фрагменты в иерархию Compose через имя класса фрагмента. Он автоматически выполняет сохранение и восстановление состояния фрагмента. Это следует использовать в качестве прямой замены ранее рекомендованного подхода использованияAndroidViewBinding
для раздувания фрагмента. - Обратный вызов
onBackStackChangeCancelled
в интерфейсеOnBackStackChangedListener
FragmentManager
теперь срабатывает как часть выполнения операций вFragmentManager
, перемещая его ближе к времени обратного вызоваonBackStackChangeCommitted
.
Версия 1.8.0-rc01
29 мая 2024 г.
androidx.fragment:fragment-*:1.8.0-rc01
выпущен. Версия 1.8.0-rc01 содержит эти коммиты .
Исправления ошибок
- Обратный вызов
onBackStackChangeCancelled
в интерфейсеFragmentManagers OnBackStackChangedListener
теперь срабатывает как часть выполнения операций вFragmentManager
, перемещая его ближе к времени обратного вызоваonBackStackChangeCommitted
. ( I5ebfb , б/332916112 )
Версия 1.8.0-бета01
14 мая 2024 г.
androidx.fragment:fragment-*:1.8.0-beta01
выпущен. Версия 1.8.0-beta01 содержит эти коммиты .
Исправления ошибок
- Из фрагмента
1.7.1
: прогнозируемый возврат теперь будет выполняться только для транзакций, в которых все фрагменты имеют либо Animator, либо Seekable Androidx Transition. Это устраняет проблему, из-за которой отмена частично доступной для поиска транзакции приводила к появлению черного экрана. ( I43037 , б/339169168 )
Версия 1.8.0-альфа02
17 апреля 2024 г.
androidx.fragment:fragment-*:1.8.0-alpha02
выпущен. Версия 1.8.0-alpha02 содержит эти коммиты .
Исправления ошибок
- Из фрагмента
1.7.0-rc02
: добавлены журналы, указывающие, почему установкаsharedElement
без каких-либо других переходов не может быть выполнена. ( Мек48е ) - Из фрагмента
1.7.0-rc02
: исправлена ошибка, из-за которой если к транзакции был добавлен недоступный для поиска общий элемент, в котором все остальные переходы были доступны для поиска, происходил сбой. Теперь транзакция корректно будет считаться неискомой. ( I18ccd )
Версия 1.8.0-альфа01
3 апреля 2024 г.
androidx.fragment:fragment-*:1.8.0-alpha01
выпущен. Версия 1.8.0-alpha01 содержит эти коммиты .
Новые возможности
- Новый
AndroidFragment
Composable
позволяет добавлять фрагменты в иерархию Compose через имя класса фрагмента. Он автоматически выполняет сохранение и восстановление состояния фрагмента. Его можно использовать в качестве прямой замены AndroidViewBindingComposable
. ( b/312895363 , Icf841 ).
Изменения в документации
- Обновлена документация по API-интерфейсам
OnBackStackChangedListener
в которой указано, когда они вызываются и как их следует использовать. ( I0bfd9 )
Обновление зависимостей
- Фрагмент теперь зависит от установщика профиля 1.3.1 .
Версия 1.7
Версия 1.7.1
14 мая 2024 г.
androidx.fragment:fragment-*:1.7.1
выпущен. Версия 1.7.1 содержит эти коммиты .
Исправления ошибок
- Прогнозируемый возврат теперь будет выполняться только для транзакций, в которых все фрагменты имеют либо Animator, либо Seekable Androidx Transition. Это устраняет проблему, из-за которой отмена частично доступной для поиска транзакции приводила к появлению пустого экрана. ( I43037 , б/339169168 )
Версия 1.7.0
1 мая 2024 г.
androidx.fragment:fragment-*:1.7.0
выпущен. Версия 1.7.0 содержит эти коммиты .
Прогнозирующая поддержка жестов назад
- Фрагменты теперь обеспечивают поддержку функции Predictive в приложении при использовании
Animator
или при использовании AndroidX Transition 1.5.0 . Это позволяет пользователям использовать жест назад, чтобы увидеть предыдущий фрагмент, найдя ваш аниматор/переход, прежде чем принять решение либо зафиксировать транзакцию путем завершения жеста, либо ее отмены.
Переходная система | XML-ресурс | Поддерживает интеллектуальный возврат |
---|---|---|
Animation | R.anim | Нет |
Animator | R.animator | Да |
Transition структуры | R.transition | Нет |
AndroidX Transition с переходом 1.4.1 или более ранней версии | R.transition | Нет |
Transition AndroidX с переходом 1.5.0 | R.transition | Да |
Если вы видите какие-либо проблемы с поддержкой Predictive Back во Fragments после того, как вы включили интеллектуальный жест возврата , сообщите о проблеме во Fragment с примером проекта, который воспроизводит вашу проблему. Вы можете отключить предиктивную обратную связь, используя FragmentManager.enabledPredictiveBack(false)
в onCreate()
вашей активности.
FragmentManager.OnBackStackChangedListener()
теперь предоставляет onBackStackChangeProgressed()
и onBackStackChangeCancelled()
для получения прогнозируемого обратного хода и отмененных событий соответственно.
Фрагментация артефакта
Был создан новый артефакт fragment-compose
, предназначенный для поддержки приложений, находящихся в процессе перехода от архитектуры на основе фрагментов к архитектуре, полностью основанной на компоновке.
Первая функция, доступная в этом новом артефакте, — это метод расширения content
во Fragment
, который призван упростить использование Compose для пользовательского интерфейса отдельного фрагмента, создав для вас ComposeView
и установив правильный ViewCompositionStrategy
.
class ExampleFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) = content {
// Write your @Composable content here
val viewModel: ExampleViewModel = viewModel()
// or extract it into a separate, testable method
ExampleComposable(viewModel)
}
}
Версия 1.7.0-rc02
17 апреля 2024 г.
androidx.fragment:fragment-*:1.7.0-rc02
выпущен. Версия 1.7.0-rc02 содержит эти коммиты .
Исправления ошибок
- Добавлены журналы, показывающие, почему установка
sharedElement
без каких-либо других переходов не может быть выполнена. ( Мек48е ) - Исправлена ошибка, из-за которой если к транзакции, где все остальные переходы были доступны для поиска, добавлялся общий элемент, недоступный для поиска, происходил сбой. Теперь транзакция корректно будет считаться неискомой. ( I18ccd )
Версия 1.7.0-rc01
3 апреля 2024 г.
androidx.fragment:fragment-*:1.7.0-rc01
выпущен. Версия 1.7.0-rc01 содержит эти коммиты .
Обновление зависимостей
- Фрагмент теперь зависит от установщика профиля 1.3.1 .
Версия 1.7.0-бета01
20 марта 2024 г.
androidx.fragment:fragment-*:1.7.0-beta01
выпущен. Версия 1.7.0-beta01 содержит эти коммиты .
Изменения API
-
FragmentHostCallback
теперь написан на Kotlin, так что обнуляемость универсального типа Host соответствует обнуляемости возвращаемого типаonGetHost()
. ( I40af5 )
Исправления ошибок
- Исправлена проблема, из-за которой при использовании жеста Predictive Back для фрагмента, который не находится в контейнере, этот фрагмент никогда не удалялся. Фрагмент теперь будет немедленно перемещен в конечное состояние. ( Ида0д9 )
- Исправлена проблема во фрагментах, из-за которой прерывание входящих переходов с помощью интеллектуального жеста назад приводило к уничтожению входящего представления и оставлению пустого экрана. ( Id3f22 , б/319531491 )
Версия 1.7.0-альфа10
7 февраля 2024 г.
androidx.fragment:fragment-*:1.7.0-alpha10
выпущен. Версия 1.7.0-alpha10 содержит эти коммиты.
Исправления ошибок
- Исправлена известная проблема в предыдущем выпуске Fragment, из-за которой при использовании поддержки Predictive Back Fragment для
Animator
или AndroidX Transition Fragments выдавали исключение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
, предназначенный для поддержки приложений, находящихся в процессе перехода от архитектуры на основе фрагментов к архитектуре, полностью основанной на компоновке.
Первая функция, доступная в этом новом артефакте, — это метод расширения content
во Fragment
, который призван упростить использование Compose для пользовательского интерфейса отдельного фрагмента, создав для вас ComposeView
и установив правильный ViewCompositionStrategy
. ( 561cb7 , б/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
, вызванное установкой перехода общего элемента и невозможностью установить входной/выходной переход. ( I8472b ) - Из фрагмента
1.6.2
: когда фрагментFragmentContainerView
раздувается, его состояния, такие какFragmentManager
, Host и id, теперь доступны в обратном вызовеonInflate
. ( I1e44c , б/307427423 ) - Из фрагмента
1.6.2
: при использованииclearBackStack
для удаления набора фрагментовViewModel
любого вложенного фрагмента теперь будет очищаться при очисткеViewModels
родительского фрагмента. ( I6d83c , б / 296173018 )
Версия 1.7.0-альфа06
4 октября 2023 г.
Выпущен androidx.fragment:fragment-*:1.7.0-alpha06
. Версия 1.7.0-alpha06 содержит эти коммиты.
Обновление зависимостей
- Фрагменты были обновлены, чтобы зависеть от нового API
animateToStart
добавленного в переходе1.5.0-alpha04
.
Версия 1.7.0-альфа05
20 сентября 2023 г.
Выпущен androidx.fragment:fragment-*:1.7.0-alpha05
. Версия 1.7.0-alpha05 содержит эти коммиты.
Новые возможности
- Фрагменты теперь поддерживают функцию прогнозирования при использовании Androidx Transitions. Это позволяет вам использовать жест назад для перехода к предыдущему фрагменту с помощью вашего пользовательского перехода Androidx, прежде чем принять решение о подтверждении или отмене транзакции с помощью завершенного жеста. Чтобы включить эту функцию, вам необходимо использовать версию Transition
1.5.0-alpha03
. ( Ib49b4 , b/285175724 )
Известные проблемы
- В настоящее время существует проблема, из-за которой после того, как вы один раз отменили жест назад с переходом, при следующем запуске жеста назад переход не будет выполнен, что приведет к появлению пустого экрана. Это может быть вызвано проблемой в библиотеке переходов. ( б/300157785 ). Если вы видите эту проблему, сообщите о проблеме во фрагменте с примером проекта, который воспроизводит вашу проблему. Вы можете отключить предиктивную обратную связь, используя
FragmentManager.enabledPredictiveBack(false)
вonCreate()
вашей активности.
Версия 1.7.0-альфа04
6 сентября 2023 г.
androidx.fragment:fragment-*:1.7.0-alpha04
выпущен. Версия 1.7.0-alpha04 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема при отмене прогнозируемого жеста возврата, из-за которой фрагментам не удавалось достичь правильного состояния жизненного цикла. ( I7cffe , б/297379023 )
- Исправлена ошибка, из-за которой анимациям разрешалось запускаться с переходами. ( I59f36 )
- Исправлена проблема при использовании функции прогнозируемого возврата с фрагментами, из-за которой попытка быстрого возврата дважды назад к предпоследнему фрагменту в заднем стеке приводила к сбою. ( Ифа1а4 )
Версия 1.7.0-альфа03
23 августа 2023 г.
androidx.fragment:fragment-*:1.7.0-alpha03
выпущен. Версия 1.7.0-alpha03 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема с фрагментами при использовании интеллектуального возврата, из-за которой первый фрагмент в обратном стеке менеджера фрагментов пропускался и действие завершалось при использовании системного возврата с помощью трехкнопочной навигации или жеста прогнозируемого возврата. ( I0664b , б/295231788 )
Версия 1.7.0-альфа02
9 августа 2023 г.
androidx.fragment:fragment-*:1.7.0-alpha02
выпущен. Версия 1.7.0-alpha02 содержит эти коммиты.
Исправления ошибок
- При использовании фрагментов с прогнозируемыми жестами возврата из API 34, если вы используете систему переходов, которая не поддерживает поиск (
Animations
,Transitions
) или вообще не поддерживает переходы, Fragments теперь будет ждать завершения жеста, прежде чем выполнять обратное действие. ( I8100c )
Версия 1.7.0-альфа01
7 июня 2023 г.
androidx.fragment:fragment-*:1.7.0-alpha01
выпущен. Эта версия разработана во внутренней ветке.
Новые возможности
- Фрагменты теперь обеспечивают поддержку Predictive внутри приложения при использовании
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 , б/307427423 ) - При использовании
clearBackStack
для удаления набора фрагментовViewModel
любого вложенного фрагмента теперь будет очищаться при очисткеViewModels
родительского фрагмента. ( I6d83c , б / 296173018 )
Версия 1.6.1
26 июля 2023 г.
androidx.fragment:fragment-*:1.6.1
выпущен. Версия 1.6.1 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема, из-за которой сохраненное состояние, сохраненное, когда действие было остановлено, но не уничтожено, неправильно кэшировалось даже после того, как экземпляр фрагмента был переведен обратно в состояние
RESUMED
. Это приведет к повторному использованию этого кэшированного состояния, если этот экземпляр фрагмента находился в заднем стеке при использовании API нескольких обратных стеков для сохранения и восстановления этого фрагмента. ( I71288 , б / 246289075 )
Обновление зависимостей
- Фрагмент теперь зависит от действия 1.7.2 . Это устраняет проблему, из-за которой пользователи Kotlin не могли расширить
ComponentDialog
без явной зависимости от Activity. ( б / 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
, который определяет, когда дочерний фрагмент вложен в иерархию родительского представления, но не добавлен в родительскийchildFragmentManager
. - API-интерфейсы
Fragment
иFragmentManager
, которые принимаютIntent
илиIntentSender
теперь правильно помечены с помощью@NonNull
, чтобы предотвратить передачу нулевого значения, поскольку нулевое значение всегда немедленно приводит к сбою соответствующих API-интерфейсов платформы Android, к которым обращаются эти методы. -
DialogFragment
теперь предоставляет доступ к базовомуComponentDialog
через APIrequireComponentDialog()
. - Фрагмент теперь зависит от жизненного цикла
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 , б/249519359 ) - Исправлена проблема, из-за которой обратные вызовы
onBackStackChangeListener
отправлялись для транзакций, которые фактически не меняли задний стек, если они были смешаны с транзакциями, которые это делают. ( I0eb5c , б/279306628 )
Версия 1.6.0-бета01
19 апреля 2023 г.
androidx.fragment:fragment-*:1.6.0-beta01
выпущен. Версия 1.6.0-beta01 содержит эти коммиты.
Исправления ошибок
- Использование
postponeEnterTransition
с таймаутом и последующая замена отложенного фрагмента больше не приводит к утечке отложенного фрагмента. ( I2ec7d , б/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 , б / 234274777 ) - API-интерфейсы фрагмента
commitNow()
,executePendingTransactions()
иpopBackStackImmediate()
были помечены@MainThread
, что означает, что теперь все они будут выдавать ошибки сборки, если они не вызываются из основного потока, вместо того, чтобы ожидать сбоя во время выполнения. ( Ic9665 , б/236538905 )
Исправления ошибок
- Исправлена ошибка в
FragmentManager
, из-за которой сохранение и восстановление в одном кадре могло привести к сбою. ( Ib36af , b/246519668 ) - Обратные вызовы
OnBackStackChangedListener
onBackStackChangeStarted
иonBackStackChangeCommitted
теперь выполняются только при изменении обратного стекаFragmentManager
. ( I66055 , б / 274788957 )
Версия 1.6.0-альфа08
22 марта 2023 г.
Выпущен androidx.fragment:fragment-*:1.6.0-alpha08
. Версия 1.6.0-alpha08 содержит эти коммиты.
Изменение поведения
- Время обратного вызова
OnBackStackChangedListener.onBackStackChangeCommited
было скорректировано для выполнения до выполнения операций с фрагментами. Это гарантирует, что обратному вызову никогда не будет передан отсоединенный фрагмент. ( I66a76 , б / 273568280 )
Исправления ошибок
- Из фрагмента
1.5.6
: исправлена проблема, из-за которой вызовclearFragmentResultListener
внутриsetFragmentResultListener
не работал, еслиLifecycle
ужеSTARTED
и результат уже доступен. ( Если7458 )
Обновления зависимостей
- Фрагмент теперь зависит от жизненного цикла
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 , б/244336571 )
Версия 1.6.0-альфа06
22 февраля 2023 г.
Выпущен androidx.fragment:fragment-*:1.6.0-alpha06
. Версия 1.6.0-alpha06 содержит эти коммиты.
Изменение поведения
- Новый обратный вызов
onBackStackChangedStarted
дляonBackStackChangedListener
FragmentManager
теперь будет выполняться до того, как фрагменты начнут переходить в свои целевые состояния. ( I34726 )
Версия 1.6.0-альфа05
8 февраля 2023 г.
Выпущен androidx.fragment:fragment-*:1.6.0-alpha05
. Версия 1.6.0-alpha05 содержит эти коммиты.
Новые возможности
- Интерфейс
FragmentManager.OnBackStackChagnedListener
теперь предлагает два дополнительных обратных вызова,onBackStackChangeStarted
иonBackStackChangeCommitted
, которые позволяют получать дополнительную информацию и контролировать, когда происходят изменения обратного стека вFragmentManager
. ( Ib7ce5 , б/238686802 )
Изменения API
- API-интерфейсы
Fragment
иFragmentManager
, которые принимаютIntent
илиIntentSender
теперь правильно помечены@NonNull
, чтобы предотвратить передачу нулевого значения, поскольку нулевое значение всегда немедленно приводит к сбою соответствующих API-интерфейсов платформы Android, к которым обращаются эти методы. ( I06fd4 )
Версия 1.6.0-альфа04
7 декабря 2022 г.
Выпущен androidx.fragment:fragment-*:1.6.0-alpha04
. Версия 1.6.0-alpha04 содержит эти коммиты.
Новые возможности
-
FragmentStrictMode
добавлен новыйWrongNestedHierarchyViolation
, который определяет, когда дочерний фрагмент вложен в иерархию родительского представления, но не добавлен в родительскийchildFragmentManager
. ( I72521 , б / 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 ).
Исправления ошибок
- Из фрагмента
1.5.5
: фрагменты больше не будут ошибочно сохранять состояниеViewModel
как часть сохраненного состояния реестра представлений. ( I10d2b , б/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 , б / 238928865 )
Исправления ошибок
- Исправлены регрессии, вызванные интеграцией новых интерфейсов обратного вызова поставщика (
OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
), чтобы гарантировать, что фрагменты всегда получают правильные обратные вызовы. ( I9b380 , I34581 , ( I8dfe6 , b/242570955 ), If9d6b , Id0096 , I690b3 , I2cba2 )
Версия 1.6.0-альфа02
24 августа 2022 г.
androidx.fragment:fragment:1.6.0-alpha02
, androidx.fragment:fragment-ktx:1.6.0-alpha02
и androidx.fragment:fragment-testing:1.6.0-alpha02
выпущены. Версия 1.6.0-alpha02 содержит эти коммиты.
Исправления ошибок
- Из фрагмента
1.5.2
: исправлена проблема, из-за которой одновременное выполнение транзакцийpopBackStack()
иreplace()
могло привести к тому, что при выходе из фрагментов запускалась неправильнаяAnimation
/Animator
. ( Ib1c07 , б/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
, что позволяет точно определить, откуда происходит состояние фрагмента. ( б / 207158202 )
Исправления ошибок
- Из фрагмента
1.5.1
: исправлена регрессия вDialogFragmentCallbacksDetector
, из-за которой использование версии lint в комплекте с AGP 7.4 приводило к сбою lint. ( б / 237567009 )
Обновление зависимостей
- Из фрагмента
1.5.1
: библиотека фрагментов теперь зависит от жизненного цикла2.5.1
. ( ID204c ) - Из фрагмента
1.5.1
: библиотека фрагментов теперь зависит от действия1.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 , б/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 , б/244336571 )
- Исправлена проблема, из-за которой вызов
clearFragmentResultListener
внутриsetFragmentResultListener
не работал, еслиLifecycle
ужеSTARTED
и результат уже доступен. ( Если7458 )
Версия 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 , б/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 , б/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 , б/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. ( б / 237567009 )
Обновление зависимостей
- Библиотека фрагментов теперь зависит от жизненного цикла
2.5.1
. ( ID204c ) - Библиотека фрагментов теперь зависит от действия
1.5.1
. ( I10f07 )
Версия 1.5.0
29 июня 2022 г.
androidx.fragment:fragment:1.5.0
, androidx.fragment:fragment-ktx:1.5.0
и androidx.fragment:fragment-testing:1.5.0
выпущены. Версия 1.5.0 содержит эти коммиты.
Важные изменения с версии 1.4.0
- Интеграция CreationExtras —
Fragment
теперь имеет возможность предоставлятьViewModelProvider.Factory
без сохранения состояния черезCreationExtras
жизненного цикла2.5.0
. - Интеграция диалогов компонентов .
DialogFragment
теперь используетComponentDialog
через Activity1.5.0
в качестве диалогового окна по умолчанию, возвращаемогоonCreateDialog()
. - Рефакторинг сохраненного состояния экземпляра . Фрагменты начали менять способ сохранения состояния своего экземпляра. Это попытка помочь четко определить, какое состояние было сохранено во фрагменте и источник этого состояния. Текущие изменения включают в себя следующее:
-
FragmentManager
теперь сохраняет сохраненное состояние экземпляра вBundle
а не непосредственно в пользовательскомParcelable
. - Результаты, установленные через
Fragment Result APIs
, которые еще не были доставлены, теперь сохраняются отдельно от внутреннего состоянияFragmentManager
. - Состояние, связанное с каждым отдельным фрагментом, теперь сохраняется отдельно от внутреннего состояния
FragmentManager
, что позволяет сопоставить объем сохраненного состояния, связанного с отдельным фрагментом, с уникальными идентификаторами, присутствующими в журнале отладкиFragment
.
-
Другие изменения
-
FragmentStrictMode
теперь предоставляет возможность частным сторонним фрагментам обходить определенные штрафы за нарушение с помощьюallowViolation()
с именем класса. - API-интерфейсы фрагментов для предоставления меню для
ActionBar
вашего действия устарели. API-интерфейсыMenuHost
иMenuProvider
, добавленные в упражнении1.4.0
предоставляют тестируемую эквивалентную поверхность API с учетом жизненного цикла, которую должны использовать фрагменты.
Версия 1.5.0-rc01
11 мая 2022 г.
androidx.fragment:fragment:1.5.0-rc01
, androidx.fragment:fragment-ktx:1.5.0-rc01
и androidx.fragment:fragment-testing:1.5.0-rc01
выпущены. Версия 1.5.0-rc01 содержит эти коммиты.
Рефакторинг состояния сохраненного экземпляра
- Состояние, связанное с каждым отдельным фрагментом, теперь сохраняется отдельно от внутреннего состояния
FragmentManager
, что позволяет сопоставить объем сохраненного состояния, связанного с отдельным фрагментом, с уникальными идентификаторами, присутствующими в журнале отладки фрагмента . ( а153е0 , б/207158202 )
Версия 1.5.0-бета01
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 , б/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
'ssetHasOptionsMenu()
устарел. Для управления меню и пунктами меню новые API-интерфейсы меню следует использовать вместо этого в соответствии с фрагментом1.5.0-alpha04
. ( I7b4b4 , b/226438239 )
Версия 1.5.0-Alpha04
23 марта 2022 г.
androidx.fragment:fragment:1.5.0-alpha04
, androidx.fragment:fragment-ktx:1.5.0-alpha04
и androidx.fragment:fragment-testing:1.5.0-alpha04
. Версия 1.5.0-Alpha04 содержит эти коммиты.
API меняется
- Фрагментные API для предоставления меню для
ActionBar
вашей деятельности устарели, поскольку они тесно соединяют ваш фрагмент с вашей деятельностью и не являются проверенными в изоляции.MenuHost
иMenuProvider
API, добавленные в действие1.4.0-alpha01
обеспечивают тестируемую эквивалентную API-поверхность, осведомленную о жизненном цикле, которую должны использовать фрагменты. ( I50a59 , i20758 )
Исправления ошибок
-
SavedStateViewFactory
теперь поддерживает использованиеCreationExtras
, даже если он был инициализирован с помощьюSavedStateRegistryOwner
. Если предоставляются дополнения, инициализированные аргументы игнорируются. ( I6c43b , b/224844583 )
Версия 1.5.0-Alpha03
23 февраля 2022 г.
androidx.fragment:fragment:1.5.0-alpha03
, androidx.fragment:fragment-ktx:1.5.0-alpha03
и androidx.fragment:fragment-testing:1.5.0-alpha03
. Версия 1.5.0-Alpha03 содержит эти коммиты.
API меняется
- Теперь вы можете передавать
CreationExtras
в функцияхby viewModels()
иby activityViewModels()
. ( Ibefe7 , b/217601110 )
Поведение изменяется
-
DialogFragment
теперь используетComponentDialog
в качестве диалога по умолчанию, возвращаемогоonCreateDialog()
. ( If3784 , b/217618170 )
Версия 1.5.0-Alpha02
9 февраля 2022 г.
androidx.fragment:fragment:1.5.0-alpha02
, androidx.fragment:fragment-ktx:1.5.0-alpha02
и androidx.fragment:fragment-testing:1.5.0-alpha02
. Версия 1.5.0-Alpha02 содержит эти коммиты.
Новые возможности
-
FragmentStrictMode
теперь предлагает возможность частных сторонних фрагментов обходить конкретные штрафы за нарушение с использованиемallowViolation()
с именем класса. ( I8f678 )
Версия 1.5.0-Alpha01
26 января 2022 г.
androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
и androidx.fragment:fragment-testing:1.5.0-alpha01
. Версия 1.5.0-Alpha01 содержит эти коммиты.
Новые возможности
-
Fragment
теперь интегрируется с ViewModel CreationExtras, представленным как часть жизненного цикла2.5.0-alpha01
. ( I3060b , b/207012585 )
Исправления ошибок
- Из фрагмента
1.4.1
:FragmentContainerView
больше не выбрасывает незаконное исключение состояния, когда идентификаторы просмотра, сгенерированные из XML, имеют отрицательные значения. ( IC185B , B/213086140 ) - Из фрагмента
1.4.1
: при использовании пользовательскогоownerProducer
Lambda с 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 ) - При использовании пользовательского
ownerProducer
Lambda с помощью 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>().navController
FragmentScenario
теперь реализуетCloseable
, позволяя использовать его с помощью методаuse
Kotlin или Try-with-resources .Добавлен
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
, чтобы указать, включить ли стандартную анимацию транспорта активности, взятая из вашей темы в переходе фрагментов.Экспериментальный API
FragmentManager.enableNewStateManager(boolean)
был удален, и теперь новый менеджер штата теперь является единственным доступным вариантом.
Несколько обратных стеков
FragmentManager
поддерживает задний стек, состоящий из фрагментных транзакций, в которых использовался addToBackStack()
. Это позволяет вам выносить эти транзакции и вернуться в предыдущее состояние, используя механизмы для сохранения состояния с помощью фрагментов , чтобы ваши фрагменты соответствующим образом восстановили свое состояние.
Этот релиз расширяется по этим механизмам, предоставляя три новых API FragmentManager
: saveBackStack(String name)
, restoreBackStack(String name)
и clearBackStack(String name)
. Эти API используют то же name
что и addToBackStack()
чтобы спасти состояние FragmentTransaction
и состояния каждого фрагмента, который был добавлен в этих транзакциях, и позволяет позже восстановить эти транзакции и их фрагменты с их состоянием в такте. Это позволяет эффективно «обмениваться» между несколькими спинками задними стеками, сохраняя текущий задний стек и восстанавливая сохраненный задний стек.
saveBackStack()
работает аналогично popBackStack()
тем, что он асинхронно и приводит к обратному и удалению всех фрагментных транзакций, но оно отличается от нескольких. Важные способы:
-
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
для коррекции использования жизненного цикла фрагмента в жизненный цикл вида фрагмента при использовании APIaddMenuProvider
MenuHost
. ( AOSP/1830457 , B/200326272 )
Обновления документации
- Сообщение об испаке для API, которые теперь обрабатывают API -интерфейсы результатов деятельности , а именно
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
иonRequestPermissionsResult
, все были расширены с более подробной информацией. ( CCE80F ) - Сообщение об испаке для
onActivityCreated()
как дляFragment
, так иDialogFragment
было расширено с помощью более подробной информации. ( 224DB4 )
Версия 1.4.0-Alpha09
15 сентября 2021 г.
androidx.fragment:fragment:1.4.0-alpha09
, androidx.fragment:fragment-ktx:1.4.0-alpha09
и androidx.fragment:fragment-testing:1.4.0-alpha09
. Версия 1.4.0-Alpha09 содержит эти коммиты.
Новые возможности
- Теперь вы можете позвонить
clearBackStack(name)
чтобы очистить любое состояние, ранее сохраненное с помощьюsaveBackStack(name)
. ( I70cd7 )
API меняется
- Класс
FragmentContainerView
был переписан в Kotlin, гарантируя, что функцияgetFragment
будет должным образом уважать нулясь. ( If694a , b/189629145 ) - FragmentStrictMode теперь написан в Kotlin ( I11767 , B/199183506 )
Исправления ошибок
- Исправлена проблема, в которой состояние фрагмента, которое было добавлено с помощью
setReorderingAllowed(true)
, а затем немедленно удалено до выполнения ожидающих транзакций, не будет должным образом очищено. ( I8ccb8 )
Версия 1.4.0-Alpha08
1 сентября 2021 г.
androidx.fragment:fragment:1.4.0-alpha08
, androidx.fragment:fragment-ktx:1.4.0-alpha08
и androidx.fragment:fragment-testing:1.4.0-alpha08
. Версия 1.4.0-Alpha08 содержит эти коммиты.
Исправления ошибок
- Улучшено чек для Lint
UseRequireInsteadOfGet
, чтобы лучше справиться с избыточным скобком. ( I2d865 ) - Улучшении проверки Lint
UseGetLayoutInflater
для обработки дополнительных краев. ( IE5423 )
Версия 1.4.0-Alpha07
18 августа 2021 г.
androidx.fragment:fragment:1.4.0-alpha07
, androidx.fragment:fragment-ktx:1.4.0-alpha07
и androidx.fragment:fragment-testing:1.4.0-alpha07
высвобождаются без заметных изменений. Версия 1.4.0-Alpha07 содержит эти коммиты.
Версия 1.4.0-Alpha06
4 августа 2021 г.
androidx.fragment:fragment:1.4.0-alpha06
, androidx.fragment:fragment-ktx:1.4.0-alpha06
и androidx.fragment:fragment-testing:1.4.0-alpha06
. Версия 1.4.0-Alpha06 содержит эти коммиты.
Исправления ошибок
- Исправлена проблема с несколькими спинками, когда быстро обменивается между спинками, которые появляются в виде
IllegalStateException
при восстановленииFragmentTransaction
или в качестве второй копии появляющегося фрагмента. ( I9039f ) - Исправлена проблема, в которой
FragmentManager
будет держать копию состояния, ранее сохранившуюся черезsaveBackStack()
даже после восстановления этого состояния. ( IED212 ) - Метод
dismissAllowingStateLoss()
DialogFragment
больше не сбои, когда вы называете его после того, как состояние сохраняется при конкретном добавлении диалога с помощью методаshow(FragmentTransaction, String)
. ( I84422 )
Версия 1.4.0-Alpha05
21 июля 2021 г.
androidx.fragment:fragment:1.4.0-alpha05
, androidx.fragment:fragment-ktx:1.4.0-alpha05
и androidx.fragment:fragment-testing:1.4.0-alpha05
. Версия 1.4.0-Alpha05 содержит эти коммиты.
Исправления ошибок
- Из фрагмента
1.3.6
: представление фрагмента теперь правильно установлено, чтобыGONE
при использованииhide()
, когда у корневого представления есть установкаtransitionGroup=”true”
. ( AOSP/1766655 , B/193603427 ) - Из фрагмента
1.3.6
:FragmentActivity
теперь всегда открывает сохраненное состояние в качестве первой операции в обратных вызовах жизненного цикла. ( I6db7a )
Обновление зависимости
- От фрагмента
1.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.4
AOSP/1679887 . Фрагменты теперь правильно обрабатывают группы переходов (либо установленные непосредственно черезtransitionGroup="true"
, либо косвенно черезtransitionName
илиbackground
), и общие элементы больше не будут бросатьIndexOutOfBoundsException
s. ( I16484 , B/188679569 , B/188969304 ) -
FragmentManager
больше не будет разбиться, когда вы попытаетесь скрыть фрагмент снятия. ( I573dd , b/183634730 ) - Проверка Lint
OnCreateDialogIncorrectCallback
больше не будет сбой при оценке переменной верхнего уровня. ( 0A9EFA , B/189967522 )
Версия 1.4.0-Alpha02
2 июня 2021 г.
androidx.fragment:fragment:1.4.0-alpha02
, androidx.fragment:fragment-ktx:1.4.0-alpha02
и androidx.fragment:fragment-testing:1.4.0-alpha02
. Версия 1.4.0-Alpha02 содержит эти коммиты.
Новые возможности
-
FragmentStrictMode
теперь всегда будет регистрировать нарушения, когда регистрация будет включена черезFragmentManager
, независимо от текущей политики строгого режима. ( I02DF6 , B/187872638 ) FragmentStrictMode
теперь поддерживает освобождение определенных классовFragment
от строгогоViolation
режима, что позволяет этому классу обходить любые штрафы. ( IB4E5D , B/184786736 )Класс
Violation
FragmentStrictMode
был расширен для добавления структурной информации на основе каждого нарушения. Это позволяет вам точно проверить, что вызвало нарушение наряду с нарушением фрагмента ( IF5118 , B/187871150 ), каждоеViolation
содержит следующее:-
WrongFragmentContainerViolation
в настоящее время содержитViewGroup
, которую пытался добавитьFragment
. ( I83C75 , B/187871150 ) -
TargetFragmentUsageViolation
была расширена в,SetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
иGetTargetFragmentRequestCodeUsageViolation
, сSetTargetFragmentUsageViolation
, содержащим фрагмент цели и код запроса. ( I741b4 , b/187871150 ) -
SetUserVisibleHintViolation
теперь содержит логическое значение, переданное вsetUserVisibleHint()
. ( I00585 , B/187871150 ) -
FragmentTagUsageViolation
теперь содержит группу просмотров, что тег<fragment>
пытался раздуть фрагмент. ( I5dbbc , b/187871150 ) -
FragmentReuseViolation
теперь содержит уникальный идентификатор предыдущего экземпляраFragment
который вызвал VIOTION. ( I0544D , B/187871150 ) -
RetainInstanceUsageViolation
в настоящее время абстрактно и имеет два подкласса:SetRetainInstanceUsageViolation
иGetRetainInstanceUsageViolation
, представляющие два случая для типа нарушения. ( IC81E5 , B/187871150 )
-
Поведение изменяется
-
FragmentContainerView
теперь бросает исключение при попытке изменить атрибутfitsSystemWindow
программно или через XML. Вставки должны обрабатывать мнение каждого отдельного фрагмента. ( IE6651 , B/187304502 )
Версия 1.4.0-Alpha01
18 мая 2021 г.
androidx.fragment:fragment:1.4.0-alpha01
, androidx.fragment:fragment-ktx:1.4.0-alpha01
и androidx.fragment:fragment-testing:1.4.0-alpha01
. Версия 1.4.0-Alpha01 содержит эти коммиты.
Новые возможности
FragmentContainerView
теперь предоставляет методgetFragment()
, который возвращает фрагмент, который был недавно добавлен в контейнер. Это использует ту же логику, что иfindFragmentById()
с идентификаторомFragmentContainerView
, но позволяет цеплять вызов. ( IFE17A , B/162527857 )val navController = binding.container.getFragment<NavHostFragment>().navController
Добавлен
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
, чтобы указать, включить ли стандартную анимацию транспорта активности, взятая из вашей темы в переходе фрагментов. ( I46652 )
Несколько обратных стеков
FragmentManager
поддерживает задний стек, состоящий из фрагментных транзакций, в которых использовался addToBackStack()
. Это позволяет вам выносить эти транзакции и вернуться в предыдущее состояние, используя механизмы для сохранения состояния с помощью фрагментов , чтобы ваши фрагменты соответствующим образом восстановили свое состояние.
Этот релиз расширяется по этим механизмам, предоставляя два новых API FragmentManager
: saveBackStack(String name)
и restoreBackStack(String name)
. Эти API используют то же name
что и addToBackStack()
чтобы спасти состояние FragmentTransaction
и состояния каждого фрагмента, который был добавлен в этих транзакциях, и позволяет позже восстановить эти транзакции и их фрагменты с их состоянием в такте. Это позволяет эффективно «обмениваться» между несколькими спинками задними стеками, сохраняя текущий задний стек и восстанавливая сохраненный задний стек.
saveBackStack()
работает аналогично popBackStack()
тем, что он асинхронно и приводит к обратному и удалению всех фрагментных транзакций, но оно отличается от нескольких. Важные способы:
-
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
, позволяя использовать его с помощью методаuse
Kotlin или Try-with-resources . ( #121 , b/143774122 )
Новые чеки на ворс
- Проверка Lint
UseGetLayoutInflater
Lint теперь предупреждает при использованииLayoutInflater.from(Context)
вDialogFragment
- вы всегда должны использовать методgetLayoutInflater()
, чтобы получить соответствующий дляLayoutInflater
. ( #156 , b/170781346 ) - Проверка Lint
DialogFragmentCallbacksDetector
теперь предупреждает при вызовеsetOnCancelListener
илиsetOnDismissListener
в методеDialogFragment
onCreateDialog()
- эти слушатели принадлежат самимDialogFragment
, и вы должны переопределитьonCancel()
иonDismiss()
, чтобы получить эти вызовы. ( #171 , b/181780047 , b/187524311 )
Исправления ошибок
- Из фрагмента 1.3.4 : Исправлена регрессия, введенная в фрагменте
1.3.3
при использовании 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 за то, что он заработал
FragmentScenario
Closeable
. ( #121 , b/143774122 ) - Спасибо Simonschiller за добавление всего API
FragmentStrictMode
для этого релиза! ( #123 , #131 , #150 , b/143774122 , #142 , b/153738653, #141 , b/153738235 , #146 , b/181137036 , #140 , b/153737954 , #136 , B/153738974 , #139 , b/153737745 ) - Спасибо 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.4
AOSP/1679887 . Фрагменты теперь правильно обрабатывают группы переходов (либо установленные непосредственно черезtransitionGroup="true"
, либо косвенно черезtransitionName
илиbackground
), и общие элементы больше не будут бросатьIndexOutOfBoundsException
s. ( I16484 , B/188679569 , B/188969304 )
Версия 1.3.4
18 мая 2021 г.
androidx.fragment:fragment:1.3.4
, androidx.fragment:fragment-ktx:1.3.4
, и androidx.fragment:fragment-testing:1.3.4
выпускаются. Версия 1.3.4 содержит эти коммиты.
Исправления ошибок
- Исправлена регрессия, введенная в фрагменте
1.3.3
при использовании 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
, and androidx.fragment:fragment-testing:1.3.2
are released. Version 1.3.2 contains these commits.
New State Manager Bug Fixes
- When running both
popBackStack()
andcommit()
operations together, the last operation will now set the direction for all animations rather than running some pop animations and some enter animations. ( 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 )
Dependency Updates
- Fragment now depends on Activity 1.2.2 , fixing an issue with Activity's
InvalidFragmentVersionForActivityResult
lint check when using Fragment 1.3.1 or higher. - Fragment now depends on Lifecycle 2.3.1 .
Version 1.3.1
10 марта 2021 г.
androidx.fragment:fragment:1.3.1
, androidx.fragment:fragment-ktx:1.3.1
, and androidx.fragment:fragment-testing:1.3.1
are released. Version 1.3.1 contains these commits.
Новые возможности
- Dialogs within a
DialogFragment
can now get access to ViewTree owners through their DecorView, ensuring thatDialogFragment
can be used withComposeView
. ( Ib9290 , b/180691023 )
Исправления ошибок
- Fragments inflated into an already
RESUMED
activity using FragmentContainerView are now properly shown after a configuration change. ( Ie14c8 , b/180538371 ) - There is no longer an extra
}
at the end of the fragmenttoString()
( I54705 , b/177761088 ) - Overridden methods in FragmentActivity now properly inherit the base method javaDoc ( I736ce , b/139548782 )
- The docs for
setFragmentResult
andsetFragmentResultListener
have updated their parameters docs to reflect that they no longer accept nullables ( I990ba , b/178348386 )
New State Manager Bug Fixes
- Fixed a memory leak in fragments caused by
mFocusedView
( Ib4e9e , b/179925887 ) - Fragments now properly call
onCreateOptionsMenu
when using show/hide transactions ( I8bce8 , b/180255554 ) - Child fragments with transitions that start prior to the fragment being laid out will now properly reach
RESUMED
( Ic11e6 , b/180825150 ) - Fragments inflated using the
<fragment>
tag will now always make it toRESUMED
( I452ac , ( I9fa49 )
Dependency Updates
- Fragment 1.3.1 depends on Activity
1.2.1
. ( I557b9 )
Version 1.3.0
10 февраля 2021 г.
androidx.fragment:fragment:1.3.0
, androidx.fragment:fragment-ktx:1.3.0
, and androidx.fragment:fragment-testing:1.3.0
are released. Version 1.3.0 contains these commits.
Major changes since 1.2.0
- New State Manager : A significant rewrite of the internals of
FragmentManager
has fixed numerous issues around the dispatch of lifecycle events, animations and transitions, and how postponed fragments are handled. Activity Result API Integration : Added support for the
ActivityResultRegistry
API introduced in Activity1.2.0
to 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 aFragmentActivity
orAppCompatActivity
.
- 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 onFragmentActivity
andFragment
have been deprecated. A newFragmentOnAttachListener
has 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.FragmentScenario
Improvements : TheFragmentScenario
class from thefragment-testing
artifact has been rewritten in Kotlin and has received a number of improvements:-
FragmentScenario
now usessetMaxLifecycle()
to implementmoveToState()
, ensuring consistent behavior on all API levels and decoupling the Fragment's state from the underlying Activity. -
FragmentScenario
now supports setting an initialLifecycle.State
to support asserting the fragment's state before moving to eachLifecycle.State
for the first time. - There is now an alternative to the
FragmentScenario
API ofonFragment
in the form of the Kotlin reified extension methodwithFragment
that allows you to return a value. Notably, it rethrows exceptions raised in the given block.
-
ViewTree
Support :Fragment
now supports theViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
, andViewTreeSavedStateRegistryOwner
APIs added in Lifecycle2.3.0
and SavedState1.1.0
such that it will return the Fragment as theViewModelStoreOwner
, and aSavedStateRegistryOwner
andLifecycleOwner
tied to the fragment's view Lifecycle when using aView
within aFragment
.TRANSIT_
animation changes : The fragment default effects,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
, andTRANSIT_FRAGMENT_FADE
, now useAnimator
instead 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 theViewModel
and theonCleared()
callback it receives).ViewPager 1 adapter deprecation : With the release of ViewPager2
1.0.0
, theFragmentPagerAdapter
andFragmentStatePagerAdapter
classes for interacting withViewPager
have been deprecated. See Migrate from ViewPager to ViewPager2 .
Version 1.3.0-rc02
27 января 2021 г.
androidx.fragment:fragment:1.3.0-rc02
, androidx.fragment:fragment-ktx:1.3.0-rc02
, and androidx.fragment:fragment-testing:1.3.0-rc02
are released. Version 1.3.0-rc02 contains these commits.
Исправления ошибок
- Fixed an issue where a parent
DialogFragment
would appear above a childDialogFragment
after a configuration change; child dialog fragments now always appear above a parent dialog fragment. ( I30806 , b/177439520 ) - Fixed issue where doing a
hide
operation with anAnimation
would cause the hiding fragment to flash at the end of the animation. ( I57e22 , b/175417675 ) - Fragments with transitions added before the view hierarchy is attached now properly reach
RESUMED
. ( I1fc1d , b/177154873 )
New State Manager Bug Fixes
- The Fragment's view
Lifecycle
now properly handles cases where the Fragment's view is destroyed before theLifecycle
reachesCREATED
, avoiding exceptions stating “no event down from INITIALIZED”. ( eda2bd , b/176138645 ) - Fragments that use an
Animator
now 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. Version 1.3.0-rc01 contains these commits.
Исправления ошибок
-
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
Animation
to aFragmentContainerView
and then interrupting that addition with a pop operation. ( I952d8 ) - Fixed an issue where the fragment's view would remain in the view hierarchy if it was replaced during its
onCreate()
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 )
Version 1.3.0-beta02
2 декабря 2020 г.
androidx.fragment:fragment:1.3.0-beta02
, androidx.fragment:fragment-ktx:1.3.0-beta02
, and androidx.fragment:fragment-testing:1.3.0-beta02
are released. Version 1.3.0-beta02 contains these commits.
Новые возможности
-
FragmentScenario
has been fully converted to Kotlin while maintaining source and binary compatibility via usage of Kotlin 1.4's functional interfaces forFragmentAction
. ( I19d31 )
Behavior Changes
- FragmentContainerViews that do not inflate a fragment using the
class
orandroid:name
attribute can now be used outside of aFragmentActivity
. ( Id4397 , b/172266337 ) - Attempting to set the max lifecycle of a fragment to
DESTROYED
will now throw anIllegalArgumentException
( Ie7651 , b/170765622 ) - Initializing a FragmentScenario with a
DESTROYED
state 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
Animator
or one of theTRANSIT_FRAGMENT_
options. ( I92426 , b/169874632 ) - Fixed an issue that prevented fragments with an exiting
Animation
from being properly destroyed. ( I83d65 ) - Exiting fragments that have their effects reversed now correctly cancel and restart with the proper entering effect. ( I62226 , b/167092035 )
- Fixed an issue where the exit
Animator
of 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 )
External Contribution
-
FragmentFactory
now caches fragment classes separately for differentClassLoader
instances. Thanks Simon Schiller! ( #87 , b/113886460 )
Version 1.3.0-beta01
October 1, 2020
androidx.fragment:fragment:1.3.0-beta01
, androidx.fragment:fragment-ktx:1.3.0-beta01
, and androidx.fragment:fragment-testing:1.3.0-beta01
are released. Version 1.3.0-beta01 contains these commits.
Новые возможности
-
setMaxLifecycle()
now supports setting theLifecycle
state toINITIALIZING
as long as the fragment has not been moved toCREATED
. ( b/159662173 )
API Changes
- Upgrade androidx to use Kotlin 1.4 ( Id6471 , b/165307851 , b/165300826 )
Behavior Changes
- 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()
toCREATED
now properly run their exit effects. ( b/165822335 ) - Removing a detached fragment that is not added to the back stack no longer causes a memory leak. Courtesy of Nicklas Ansman Giertz! ( b/166489383 )
- Active fragments will now always have a non-null
FragmentManager
and fragments with a non-nullFragmentManager
will always be considered active. ( aosp/1422346 ) - The fragment default effects,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
, andTRANSIT_FRAGMENT_FADE
, now useAnimator
instead 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
INVISIBLE
before the animation begins, it will actually stay invisible. ( b/164481490 ) - Fragments now prioritize
Animators
overAnimations
, meaning a fragment with both will only run theAnimator
and 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
August 19, 2020
androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
, and androidx.fragment:fragment-testing:1.3.0-alpha08
are released. Version 1.3.0-alpha08 contains these commits.
New State Manager
This release includes a major refactoring of the internal state management of FragmentManager
which affects the dispatch of lifecycle methods, animations and transitions, and how postponed transactions are handled. This is enabled by default. See the Fragments: Rebuilding the Internals blog post for more details. ( b/139536619 , b/147749580 )
- An experimental API in
FragmentManager.enableNewStateManager(boolean)
can be used to control whether FragmentManager uses the new state manager. ( I7b6ee )
The following issues are fixed only when using the new state manager:
- The previous fragment of a
replace
operation is now correctly stopped before the new fragment is started. ( b/161654580 ) - Fragments now prevent multiple competing animations on the same fragments, avoiding cases where an
Animation
would override allTransition
effects or anAnimator
and aTransition
on an individual fragment would both run. ( b/149569323 ) - The
enterTransition
andexitTranstion
of all fragments entering and exiting are now ran rather than only the last entering fragment and the first exiting fragment. ( b/149344150 ) - Postponed fragments no longer get stuck at the
CREATED
state but instead move toSTARTED
with other fragments. ( b/129035555 ) - Fixed an issue where
FragmentManager
would execute operations out of order when mixing a postponed re-ordered transaction and a non-reordered transaction. ( b/147297731 ) - Popping multiple fragments simultaneously will no longer result in intermediate fragments being temporarily visible when postponing fragments. ( b/37140383 )
-
FragmentManager
now returns the correct fragments when 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
Transition
and AndroidXTransition
instances now mentions the fragment with the invalid transition. ( b/155574969 )
Behavior Changes
- You can now call
launch()
on anActivityResultLauncher
in 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 ) -
FragmentActivity
now uses theOnContextAvailableListener
API introduced in Activity1.2.0-alpha08
to restore the state of theFragmentManager
. Any listeners added to subclasses ofFragmentActivity
will run after this listener. ( I513da )
Исправления ошибок
-
ActivityOptions
passed 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.
Новые возможности
-
FragmentScenario
now supports setting an initial Lifecycle state ofCREATED
,STARTED
, orRESUMED
rather than always moving the Fragment to theRESUMED
state. ( b/159662750 ) - Added an alternative to the
FragmentScenario
API ofonFragment
in the form of the Kotlin reified extension methodwithFragment
that allows you to return a value. Notably, it rethrows exceptions raised in the given block. ( b/158697631 )
Behavior Changes
-
FragmentScenario
now usessetMaxLifecycle()
to implementmoveToState()
, ensuring consistent behavior on all API levels and decoupling the Fragment's state from the underlying Activity. ( b/156527405 ) - The
SavedStateRegistryOwner
returned byViewTreeSavedStateRegistryOwner
is now tied to the fragment view's Lifecycle. This ensures that it has its state saved and restore at the same time as the fragment's view. ( b/158503763 )
Исправления ошибок
- Fragments now wait for the fragment's view to be attached before calling
ViewCompat.requestApplyInsets()
, avoiding cases where the inset request was being dropped. ( b/158095749 ) - Calling
clearFragmentResultListener
now properly clears the lifecycle observer. ( b/159274993 )
Version 1.3.0-alpha06
10 июня 2020 г.
androidx.fragment:fragment:1.3.0-alpha06
, androidx.fragment:fragment-ktx:1.3.0-alpha06
, and androidx.fragment:fragment-testing:1.3.0-alpha06
are released. Version 1.3.0-alpha06 contains these commits.
Новые возможности
- The
onAttachFragment()
callback onFragmentActivity
andFragment
have been deprecated. A newFragmentOnAttachListener
has 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
DialogFragment
would show anotherDialogFragment
as a child fragment. ( b/157195715 ) - Fixed an issue where the
UseRequireInsteadOfGet
Lint check would not handle chained usages of the?.
и!!
operators correctly. ( b/157677616 )
Version 1.3.0-alpha05
May 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
ViewTreeViewModelStoreOwner
from Lifecycle2.3.0-alpha03
, andViewTreeSavedStateRegistryOwner
from SavedState1.1.0-alpha01
when using aView
within aFragment
. ( aosp/1297993 , aosp/1300264 )
API Changes
- The
setFragmentResult()
andsetFragmentResultListener()
APIs now take a non-nullBundle
andFragmentResultListener
, 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 )
Behavior Changes
- The previously deprecated
startActivityForResult()
,startIntentSenderForResult()
, andrequestPermissions
onFragment
now internally useActivityResultRegistry
, thus removing the restriction on using only the lower bits (below0xFFFF
) for your request codes when using those APIs. ( b/155518741 )
Documentation Updates
- 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 Changes
- 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
illegalStateException
when 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 Changes
- The
prepareCall
methods onFragment
are nowfinal
. ( b/152439361 )
Исправления ошибок
- Fixed a regression introduced in Fragment
1.3.0-alpha02
when usingBottomSheetDialogFragment
. ( b/151652127 , aosp/1263328 , aosp/1265163 ) - Fixed a crash when using
prepareCall
from a fragment after a configuration change. ( b/152137004 ) - Fixed an issue where shared element and exit transitions are ignored when using
setTargetFragment()
. ( b/152023196 ) - From Fragment
1.2.4
: Updated the Fragment ProGuard rules to allow obfuscation of kept fragments. ( b/151605338 ) - From Fragment
1.2.4
: Disabled theFragmentLiveDataObserve
Lint rule onDialogFragment
classes as their lifecycle and view lifecycle are always in sync, making it safe to use eitherthis
orviewLifecycleOwner
when 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
.
Version 1.3.0-alpha02
18 марта 2020 г.
androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
, and androidx.fragment:fragment-testing:1.3.0-alpha02
are released. Version 1.3.0-alpha02 contains these commits.
Новые возможности
- Added support for the
ActivityResultRegistry
API introduced in Activity1.2.0-alpha02
to 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 Changes
-
DialogFragment
now provides a constructor that takes a@LayoutRes
that 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, aLifeCycleObserver
should be registered on the activity'sLifecycle
inonAttach()
, and removed once theonCreate()
callback is received. ( b/144309266 )
Исправления ошибок
- From Fragment
1.2.3
: Fixed a bug inDialogFragment
that caused aStackOverflowError
when 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 theUseRequireInsteadOfGet
Lint check when using a local variable name that shadowed the Kotlin property name. ( b/149891163 ) - From Fragment
1.2.3
:FragmentContainerView
no longer throws anUnsupportedOperationException
for using the incorrect constructor in layout preview. ( b/149707833 )
Известные проблемы
-
BottomSheetDialogFragment
no longer properly positions its dialog on the screen. ( b/151652127 )
Version 1.3.0-alpha01
4 марта 2020 г.
androidx.fragment:fragment:1.3.0-alpha01
, androidx.fragment:fragment-ktx:1.3.0-alpha01
, and androidx.fragment:fragment-testing:1.3.0-alpha01
are released. Version 1.3.0-alpha01 contains these commits.
Новые возможности
- Added support for the
ViewTreeLifecycleOwner.get(View)
API added in Lifecycle2.3.0-alpha01
such that it will return the Fragment'sviewLifecycleOwner
as theLifecycleOwner
for any Views returned byonCreateView()
. ( aosp/1182955 )
API Changes
- 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 theViewModel
and theonCleared()
callback it receives). ( b/143911815 ) - With the release of ViewPager2
1.0.0
, theFragmentPagerAdapter
andFragmentStatePagerAdapter
classes for interacting withViewPager
have been deprecated. See Migrate from ViewPager to ViewPager2 . ( b/145132715 )
Исправления ошибок
- Fragment ProGuard rules now correctly only keep the default constructors
Fragment
classes that are used rather than for allFragment
instances, fixing a regression introduced in Fragment1.2.1
. ( b/149665169 - The
require___()
Lint rules added in Fragment1.2.2
no longer false positive on local variables that share the same name as the shadowed Kotlin property names (ie,view
). ( b/149891163 ) -
FragmentContainerView
no longer throws anUnsupportedOperationException
when using the layout preview in Android Studio. ( b/149707833 ) - Fixed an issue where retained fragments that were added after the state is saved would not be continually recreated and then destroyed after each configuration change. ( b/145832397 )
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 )
Version 1.2.4
Version 1.2.4
1 апреля 2020 г.
androidx.fragment:fragment:1.2.4
, androidx.fragment:fragment-ktx:1.2.4
, and androidx.fragment:fragment-testing:1.2.4
are released. Version 1.2.4 contains these commits.
Исправления ошибок
- Updated the Fragment ProGuard rules to allow obfuscation of kept fragments. ( b/151605338 )
- Disabled the
FragmentLiveDataObserve
Lint rule onDialogFragment
classes as their lifecycle and view lifecycle are always in sync, making it safe to use eitherthis
orviewLifecycleOwner
when callingobserve
. ( b/151765086 )
Version 1.2.3
Version 1.2.3
18 марта 2020 г.
androidx.fragment:fragment:1.2.3
, androidx.fragment:fragment-ktx:1.2.3
, and androidx.fragment:fragment-testing:1.2.3
are released. Version 1.2.3 contains these commits.
Исправления ошибок
- Fixed a bug in
DialogFragment
that caused aStackOverflowError
when 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
UseRequireInsteadOfGet
Lint check when using a local variable name that shadowed the Kotlin property name. ( b/149891163 ) -
FragmentContainerView
no longer throws anUnsupportedOperationException
for using the incorrect constructor in layout preview. ( b/149707833 )
Version 1.2.2
Version 1.2.2
19 февраля 2020 г.
androidx.fragment:fragment:1.2.2
, androidx.fragment:fragment-ktx:1.2.2
, and androidx.fragment:fragment-testing:1.2.2
are released. Version 1.2.2 contains these commits.
New Lint checks
- Lint suggests using the
viewLifecycleOwner
as theLifecycleOwner
to calls intoOnBackPressedDispatcher
inonCreateView()
,onViewCreated()
, andonActivityCreated()
. ( b/142117657 ) - Added a new Lint check that confirms that you are using the correct
debugImplementation
when using thefragment-testing
artifact. ( 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 aget
andrequire
equivalent. ( aosp/1202883 )
Исправления ошибок
- Fixed the Fragment ProGuard files to avoid R8 warnings ( b/148963981 )
- Improved the existing Lint check suggesting using
viewLifecycleOwner
when usingobserve
to also handle thelivedata-ktx
extension method version ofobserve
. ( b/148996309 ) - Fixed the formatting for many of the Lint checks ( aosp/1157012 )
External contributions
- Thanks to Zac Sweers for contributing the
require___()
Lint checks on behalf of Slack! ( aosp/1202883 )
Version 1.2.1
Version 1.2.1
5 февраля 2020 г.
androidx.fragment:fragment:1.2.1
, androidx.fragment:fragment-ktx:1.2.1
, and androidx.fragment:fragment-testing:1.2.1
are released. Version 1.2.1 contains these commits .
Исправления ошибок
- Fragments added via the
add
andreplace
methods that take aClass
instance (or the Kotlin reified versions) now have their default constructor kept by ProGuard. ( b/148181315 ) -
FragmentStatePagerAdapter
andFragmentPagerAdapter
no longer catch exceptions thrown byFragmentManager
when 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 aFragmentManager
instance no longer throws aNullPointerException
when the Activity is already destroyed. ( b/148189412 )
Dependency changes
- Fragments
1.2.1
now depends on Lifecycle ViewModel SavedState2.2.0
.
Version 1.2.0
Version 1.2.0
22 января 2020 г.
androidx.fragment:fragment:1.2.0
, androidx.fragment:fragment-ktx:1.2.0
, and androidx.fragment:fragment-testing:1.2.0
are released. Version 1.2.0 contains these commits .
Important changes since 1.1.0
- FragmentContainerView : The
FragmentContainerView
is the strongly recommended container for dynamically added Fragments, replacing usage ofFrameLayout
or other layouts. It also supports the sameclass
,android:name
, and optionalandroid:tag
as the<fragment>
tag, but uses a normalFragmentTransaction
to add this initial fragment, instead of the custom code path used by<fragment>
. -
onDestroyView()
timing : Fragments now wait for exit animations, exit framework transitions, and exit AndroidX transitions (when using Transition1.3.0
) to complete before callingonDestroyView()
. - Class based
add()
andreplace()
: Added new overloads ofadd()
andreplace()
onFragmentTransaction
that take aClass<? extends Fragment>
and optionalBundle
of arguments. These methods use yourFragmentFactory
to construct an instance of the Fragment to add. Kotlin extensions that use reified types (ie,fragmentTransaction.replace<YourFragment>(R.id.container)
) have also been added tofragment-ktx
. - Lifecycle ViewModel SavedState Integration :
SavedStateViewModelFactory
is now the default factory used when usingby viewModels()
,by activityViewModels()
, theViewModelProvider
constructor, orViewModelProviders.of()
with a Fragment. - New Lint checks : Added a new Lint check that ensures you are using
getViewLifecycleOwner()
when observingLiveData
fromonCreateView()
,onViewCreated()
, oronActivityCreated()
. -
getFragmentManager()
deprecation : ThegetFragmentManager()
andrequireFragmentManager()
methods on Fragment have been deprecated and replaced with a singlegetParentFragmentManager()
method, which returns the non-nullFragmentManager
the Fragment is added to (you can useisAdded()
to determine if it is safe to call). -
FragmentManager.enableDebugLogging()
deprecation : The staticFragmentManager.enableDebugLogging
method has been deprecated. FragmentManager now respectsLog.isLoggable()
for the tagFragmentManager
, allowing you to enable eitherDEBUG
orVERBOSE
logging without re-compiling your app.
Известные проблемы
- Fragments referenced only via the
class
orandroid:name
attribute on aFragmentContainerView
are not kept by ProGuard automatically, requiring that you manually add a keep rule for each fragment class. ( b/142601969 ) - When adding a
NavHostFragment
usingclass
orandroid:name
in 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 .
Исправления ошибок
- Fixed a regression in Fragment
1.2.0-rc04
when 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 toCREATED
even when not in your layout instead of being instantiated but never moving through any lifecycle methods. ( b/145769287 )
Version 1.2.0-rc04
18 декабря 2019 г.
androidx.fragment:fragment:1.2.0-rc04
, androidx.fragment:fragment-ktx:1.2.0-rc04
, and androidx.fragment:fragment-testing:1.2.0-rc04
are released. Version 1.2.0-rc04 contains these commits .
Исправления ошибок
- Adjusted the animations for
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
, andTRANSIT_FRAGMENT_FADE
to avoid visual issues. ( b/145468417 )
Version 1.2.0-rc03
4 декабря 2019 г.
androidx.fragment:fragment:1.2.0-rc03
, androidx.fragment:fragment-ktx:1.2.0-rc03
, and androidx.fragment:fragment-testing:1.2.0-rc03
are released. Version 1.2.0-rc03 contains these commits .
Исправления ошибок
- Fixed an unintentional behavior change where Fragments who have been removed are still returned by
findFragmentById()
/findFragmentByTag()
while their exit animations/transitions run. ( b/143982969 , aosp/1167585 ) - Child fragments are now correctly stopped before their parents when the containing activity calls
onSaveInstanceState()
. ( b/144380645 ) - Fixed an issue where Views were incorrectly marked
INVISIBLE
after popping a hidden Fragment. ( b/70793925 ) - Fragment shared element transitions now handle Views that have been rotated, scaled, etc. ( b/142835261 )
Documentation Updates
- Clarified the deprecation documentation around
setUserVisibleHint()
. ( b/143897055 ) - Improved the documentation on
setFragmentFactory()
andgetFragmentFactory()
to better indicate that setting aFragmentFactory
will 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
.
Version 1.2.0-rc02
7 ноября 2019 г.
androidx.fragment:fragment:1.2.0-rc02
, androidx.fragment:fragment-ktx:1.2.0-rc02
, and androidx.fragment:fragment-testing:1.2.0-rc02
are released. Version 1.2.0-rc02 contains these commits .
Исправления ошибок
- When in Kotlin, the LintFix for using
getViewLifecycleOwner()
when observingLiveData
fromonCreateView()
,onViewCreated()
, oronActivityCreated()
(introduced in Fragment1.2.0-rc01
) now uses the Kotlin property access syntaxviewLifecycleOwner
instead ofgetViewLifecycleOwner()
. ( aosp/1143821 )
Version 1.2.0-rc01
October 23, 2019
androidx.fragment:fragment:1.2.0-rc01
, androidx.fragment:fragment-ktx:1.2.0-rc01
, and androidx.fragment:fragment-testing:1.2.0-rc01
are released. Version 1.2.0-rc01 contains these commits .
Новые возможности
-
FragmentContainerView
now supports theclass
attribute 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 observingLiveData
fromonCreateView()
,onViewCreated()
, oronActivityCreated()
. ( b/137122478 )
Исправления ошибок
- The
onDismiss
andonCancel
callbacks onDialogFragment
now guarantee that theDialogInterface
passed to them is non-null and thatgetDialog()
returns non-null when they are executed. ( b/141974033 ) -
FragmentContainerView
now adds the Fragment defined byclass
orandroid:name
as part of inflation, ensuring thatfindFragmentById()
andfindFragmentByTag()
work immediately afterwards. ( b/142520327 ) - Fixed an
IllegalStateException
inFragmentContainerView
due to the state being saved. ( b/142580713 ) - Fixed an
UnsupportedOperationException
inFragmentContainerView
when theFragmentContainerView
class is obfuscated. ( b/142657034 )
Известные проблемы
- Fragments referenced only via the
class
orandroid:name
attribute on aFragmentContainerView
are not kept by ProGuard automatically, requiring that you manually add a keep rule for each fragment class. We have disabled the Lint rule suggesting moving toFragmentContainerView
until this is fixed viaaapt2
. ( b/142601969 )
Version 1.2.0-beta02
11 октября 2019 г.
androidx.fragment:fragment:1.2.0-beta02
, androidx.fragment:fragment-ktx:1.2.0-beta02
, and androidx.fragment:fragment-testing:1.2.0-beta02
are released. Version 1.2.0-beta02 contains these commits .
Исправления ошибок
- Fixed an issue where Fragment's
onInflate()
did not receive proper attributes fromFragmentContainerView
, breaking cases such asNavHostFragment
. ( b/142421837 )
Version 1.2.0-beta01
9 октября 2019 г.
androidx.fragment:fragment:1.2.0-beta01
, androidx.fragment:fragment-ktx:1.2.0-beta01
, and androidx.fragment:fragment-testing:1.2.0-beta01
are released. Version 1.2.0-beta01 contains these commits .
Новые возможности
-
FragmentContainerView
adds support for adding an initial fragment with added support for theandroid:name
and optionalandroid:tag
XML attributes. Unlike the<fragment>
tag,FragmentContainerView
uses a normalFragmentTransaction
under the hood to add the initial fragment, allowing furtherFragmentTransaction
operations on theFragmentContainerView
and enables the usage of View Binding for the layout. ( b/139830628 , b/141177981 ) - Fragments now contains a Lint warning offering a quick fix to replace
<fragment>
withFragmentContainerView
. ( b/139830056 )
Исправления ошибок
- Fixed a
ClassCastException
when usingandroidx.transition
. ( b/140680619 ) - When using Transition
1.3.0-beta01
, Fragments now wait forandroidx.transition
transitions (in addition to framework transitions and animations, which were fixed in Fragment1.2.0-alpha03
and Fragment1.2.0-alpha02
, respectively) to finish before dispatchingonDestroyView()
. ( aosp/1119841 ) - When using Transition
1.3.0-beta01
, Fragments now properly cancelandroidx.transition
transitions before starting new transitions / animations on the same container. ( aosp/1119841 ) - Fixed an issue on API 17 and lower when using
androidx.transition
transitions on the root view of your Fragment when usingFragmentContainerView
. ( b/140361893 ) - The
fragment-testing
artifact now depends on AndroidX Test1.2.0
, fixing an incompatibility with the latest Espresso 3.2.0. ( b/139100149 ) - Removed usage of
Log.w
in FragmentManager. ( aosp/1126468 )
Известные проблемы
- Fragment's
onInflate()
do not receive proper attributes fromFragmentContainerView
, breaking cases such asNavHostFragment
. ( b/142421837 )
Version 1.2.0-alpha04
18 сентября 2019 г.
androidx.fragment:fragment:1.2.0-alpha04
, androidx.fragment-ktx:example:1.2.0-alpha04
, and androidx.fragment:fragment-testing:1.2.0-alpha04
are released. Version 1.2.0-alpha04 contains these commits .
Изменения API
- The
getFragmentManager()
andrequireFragmentManager()
methods onFragment
have been deprecated and replaced with a singlegetParentFragmentManager()
method, which returns the non-nullFragmentManager
the Fragment is added to (you can useisAdded()
to determine if it is safe to вызов). ( b/140574496 ) - The static
FragmentManager.enableDebugLogging
method has been deprecated. FragmentManager now respectsLog.isLoggable()
for the tagFragmentManager
, allowing you to enable eitherDEBUG
orVERBOSE
logging without re-compiling your app. ( aosp/1116591 )
Исправления ошибок
- Fragments are now properly destroyed while exit animations on other fragments are running. ( b/140574199 )
- Fixed an issue where Fragments would call
Activity.findViewById()
where before it did not. ( aosp/1116431 )
Version 1.2.0-alpha03
5 сентября 2019 г.
androidx.fragment:fragment:1.2.0-alpha03
, androidx.fragment:fragment-ktx:1.2.0-alpha03
, and androidx.fragment:fragment-testing:1.2.0-alpha03
are released. The commits included in this version can be found here .
Изменения API
-
FragmentContainerView
is nowfinal
. ( b/140133091 )
Исправления ошибок
-
FragmentContainerView
now properly reverses the draw order when popping fragments off the back stack. ( b/139104187 ) - Fixed an issue where the wrong animation would run when both popping a fragment and adding a new fragment at the same time. ( b/111659726 )
- Fragments now wait for transitions (in addition to animations, which was fixed in Fragment
1.2.0-alpha02
) to finish before dispatchingonDestroyView()
. ( b/138741697 )
Version 1.2.0-alpha02
7 августа 2019 г.
androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
, and androidx.fragment:fragment-testing:11.2.0-alpha02
is released. The commits included in this version can be found here .
Новые возможности
-
SavedStateViewModelFactory
is now the default factory used when usingby viewModels()
,by activityViewModels()
, theViewModelProvider
constructor, orViewModelProviders.of()
with aFragment
. ( b/135716331 ) - The default animations when using
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
,TRANSIT_FRAGMENT_FADE
withsetTransition
on aFragmentTransaction
have been updated to match the animations used by activities on Android 10 devices. ( aosp/1012812 , aosp/1014730 )
Изменения API
- Introduces
FragmentContainerView
as the strongly recommended container for dynamically added Fragments, replacing usage 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()
onFragmentTransaction
that take aClass<? extends Fragment>
and optionalBundle
of arguments. These methods use yourFragmentFactory
to construct an instance of the Fragment to add. Kotlin extension that use reified types (ie,fragmentTransaction.replace<YourFragment>(R.id.container)
) have also been added tofragment-ktx
. ( b/126124987 ) -
@MainThread
annotations have been added toFragment
lifecycle callbacks. ( b/127272564 ) - The breadcrumb title related APIs on
FragmentTransaction
andFragmentManager.BackStackEntry
have been deprecated. ( b/138252944 ) - The
setTransitionStyle
method onFragmentTransaction
has been deprecated. ( aosp/1011537 ) - Many of the methods in
FragmentManager
are no longerabstract
.FragmentManager
itself remainsabstract
and should not be directly instantiated or extended; you should continue to only get an existing instance fromgetSupportFragmentManager()
,getChildFragmentManager()
, etc.
Исправления ошибок
- From Fragment
1.1.0-rc04
: Fragments now correctly cancel postponed transitions on Fragments have been popped. ( b/138251858 ) - From Fragment
1.1.0-rc03
: Fixed an issue where callingpostponeEnterTransition()
with a timeout more than once would not cancel previous timeouts. ( b/137797118 ) - From Fragment
1.1.0-rc02
: Fixed a crash inFragmentPagerAdapter
andFragmentStatePagerAdapter
when removing the current item. ( b/137209870 ) - Fragments now wait for animations to finish before dispatching
onDestroyView()
. ( b/136110528 ) - Fragment animations from child fragments and their descendants are now properly handled when animating the parent Fragment. ( b/116675313 )
- Fixed a
NullPointerException
when using shared element transitions and combining a pop and add operation. ( b/120507394 ) - Added a workaround to
IllegalStateException
s when usingFragmentPagerAdapter
andFragmentStatePagerAdapter
in 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 )
Исправления ошибок
- Fixed a
NullPointerException
when popping aFragmentTransaction
that usedsetPrimaryNavigationFragment()
beforereplace()
. ( b/134673465 )
Version 1.1.0
Version 1.1.0
5 сентября 2019 г.
androidx.fragment:fragment:1.1.0
, androidx.fragment:fragment-ktx:1.1.0
, and androidx.fragment:fragment-testing:1.1.0
are released. The commits included in this version can be found here .
Important Changes since 1.0.0
- fragment-testing : The
fragment-testing
artifact provides aFragmentScenario
class for testing a fragment in isolation. See Test your app's fragments documentation for more details. - FragmentFactory : You can now set a
FragmentFactory
on aFragmentManager
to manage the creation of fragment instances, removing the strict requirement to have a no-argument constructor. - Kotlin Property Delegates for ViewModels : The
fragment-ktx
artifact now contains two Kotlin property delegates:by viewModels()
for accessing ViewModels associated with the individual fragment 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()
.FragmentPagerAdapter
andFragmentStatePagerAdapter
have a new constructor that allows you to switch to the new behavior. - FragmentActivity LayoutId constructor : Subclasses of
FragmentActivity
can now optionally call into a constructor onFragmentActivity
that takes anR.layout
ID, 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
Fragment
can now optionally call into a constructor onFragment
that takes anR.layout
ID, 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 .
Исправления ошибок
- Fragments now correctly cancel postponed transitions on Fragments have been popped. ( b/138251858 )
Version 1.1.0-rc03
19 июля 2019 г.
androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
, and androidx.fragment:fragment-testing:1.1.0-rc03
is released. The commits included in this version can be found here .
Исправления ошибок
- Fixed an issue where calling
postponeEnterTransition()
with a timeout more than once would not cancel previous timeouts. ( b/137797118 )
Version 1.1.0-rc02
July 17, 2019
androidx.fragment:fragment:1.1.0-rc02
, androidx.fragment:fragment-ktx:1.1.0-rc02
, and androidx.fragment-testing:fragment:1.1.0-rc02
are released. The commits included in this version can be found here .
Исправления ошибок
- Fixed a crash in
FragmentPagerAdapter
andFragmentStatePagerAdapter
when removing the current item. ( b/137209870 )
Version 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 .
Исправления ошибок
- Fragments now properly update their visibility when using
show()
orhide()
operations while the transition is running. ( b/133385058 ) - Fixed a
NullPointerException
when popping aFragmentTransaction
that usedsetPrimaryNavigationFragment()
beforereplace()
. ( b/134673465 )
Version 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 .
Исправления ошибок
-
androidx.lifecycle.Lifecycle
callbacks (specifically related toSTARTED
,RESUMED
,PAUSED
,STOPPED
, andDESTROYED
) for nested Fragments are now properly nested. ( b/133497591 ) -
OnBackPressedCallback
instances 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
May 16, 2019
androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
, and androidx.fragment:fragment-testing:1.1.0-alpha09
are released. The commits included in this version can be found here .
Изменения API
- Fragments now receive a callback to a new
onPrimaryNavigationFragmentChanged(boolean)
method when the primary navigation fragment changes. aosp/960857
Исправления ошибок
- Menu Items inflated by a child Fragment are now correctly removed when the Parent Fragment is removed. b/131581013
Version 1.1.0-alpha08
7 мая 2019 г.
androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
, and androidx.fragment:fragment-testing:1.1.0-alpha08
are released. The commits included in this version can be found here .
This release is incompatible with Preferences 1.1.0-alpha01 through 1.1.0-alpha04. Please upgrade to Preferences 1.1.0-alpha05 when using this version of Fragments.
Новые возможности
- Added a new overload of
postponeEnterTransition()
that takes a timeout, after which the Fragment will automatically callstartPostponedEnterTransition()
b/120803208
Изменения API
- Breaking change: the previously deprecated
FragmentFactory
instantiate
method that took aBundle
has been removed. aosp/953856 - Breaking change: The
RESUME_ONLY_CURRENT_FRAGMENT
andUSE_SET_USER_VISIBLE_HINT
constants inFragmentPagerAdapter
andFragmentStatePagerAdapter
have been renamed toBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
andBEHAVIOR_SET_USER_VISIBLE_HINT
, respectively. aosp/954782
Исправления ошибок
- Fragments that have had their lifecycle capped via
setMaxLifecycle()
no longer get resumed before reaching their final state. b/131557151 - When using
setMaxLifecycle(Lifecycle.State.CREATED)
, Fragments will properly have their view destroyed. aosp/954180
Version 1.1.0-alpha07
25 апреля 2019 г.
androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
, and androidx.fragment:fragment-testing:1.1.0-alpha07
are released. The commits included in this version can be found here .
Новые возможности
- You can now set a max Lifecycle state for a Fragment by calling
setMaxLifecycle()
on aFragmentTransaction
. This replaces the now deprecatedsetUserVisibleHint()
.FragmentPagerAdapter
andFragmentStatePagerAdapter
have a new constructor that allows you to switch to the new behavior. ( b/129780800 )
API Changes
-
moveToState(STARTED)
onFragmentScenario
can now only be called on API 24+ devices. ( b/129880016 )
Behavior Changes
- As a consequence of ( b/129907905 ), fragments on the back stack will not get a callback to
onCreateView()
when the hosting activity is recreated.onCreateView()
will now only be called when the fragment becomes visible (ie, the back stack is popped).
Исправления ошибок
- Fixed an issue when using a
<fragment>
tag in XML and thecontentLayoutId
constructor ofFragmentActivity
orAppCompatActivity
. ( b/129907905 ) - Corrected an issue where fragments on the back stack would not be moved to at least
CREATED
after a configuration change, causing ViewModels and child retained fragments to not be properly disposed. ( b/129593351 ) - Fixed a crash in
restoreSaveState
caused by a desync of the retained fragments after the instance state is saved. ( b/130433793 ) ( aosp/947824 ) - Fixed issues where an
OnBackPressedCallback
added with a fragment lifecycle would not be called if theFragmentManager
had a back stack. See androidx.activity 1.0.0-alpha07 for more details. ( aosp/948209 ) - Fragments no longer enforce
LAYER_TYPE_HARDWARE
for animations. If you specifically need a hardware layer animation, please set it as part of your animation. ( b/129486478 )
Version 1.1.0-alpha06
April 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 Changes
-
Fragment
andFragmentActivity
now contain a second constructor that takes a@LayoutRes int
, which replaces the previous behavior of annotating your class with@ContentView
. This approach works in both app and library modules. ( b/128352521 ) - FragmentActivity's
onActivityResult()
is now properly marked as@CallSuper
. ( b/127971684 ) - The FragmentFactory's
instantiate
method that takes an argument Bundle has been deprecated and apps should use the newinstantiate
overload that does not take a Bundle. ( b/128836103 ) -
FragmentScenario
methods are now properly annotated with@StyleRes
. ( aosp/924193 ) -
FragmentTabHost
has been deprecated. ( b/127971835 ) - FragmentActivity's
getThemedContext()
has been removed. ( aosp/934078 )
Исправления ошибок
- Fixed a regression in 1.1.0-alpha05 that caused the incoming Fragment to flash on the screen. ( b/129405432 )
- Fixed an issue where the primary navigation fragment would be lost after a popBackStack+replace+popBackStack series of operations. ( b/124332597 )
- Fixed an issue when using
@ContentView
constructors on your Activity when restoring Fragment state. ( b/127313094 ) - Corrected the logic of
setTargetFragment()
when replacing an existing target Fragment with a Fragment not yet attached to the FragmentManager. ( aosp/932156 )
Version 1.1.0-alpha05
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 .
Новые возможности
-
@ContentView
annotation lookups are now cached ( b/123709449 )
Behavior changes
- Calling
remove()
,hide()
,show()
,detach()
, andsetPrimaryNavigationFragment()
with a Fragment attached to a different FragmentManager now throws anIllegalStateException
rather than silently failing ( aosp/904301 )
Исправления ошибок
-
onNewIntent
forFragmentActivity
is 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
@ContentView
class 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-testing
now depends onandroidx.test:core-ktx
1.1.0 stable ( b/121209673 ) - You can now use
openActionBarOverflowOrOptionsMenu
withFragmentScenario
to test Fragment hosted options menus ( b/121126668 )
Изменения API
- Added a
requireArguments()
method which returns a@NonNull Bundle
or 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 )
Исправления ошибок
- Target fragments are correctly cleared out when you pass
null
tosetTargetFragment()
. ( aosp/849969 ) - Fixed an issue where target Fragments were sometimes unavailable in or after
onDestroy()
. ( b/122312935 ) - DialogFragment's onDismiss() is now called before
onDestroy()
. ( aosp/874133 ) ( aosp/890734 )
Version 1.1.0-alpha03
17 декабря 2018 г.
Новые возможности
- Fragment now implements
BundleSavedStateRegistryOwner
and depends on the newly released SavedState library [ aosp/824380 ] - A
by activityViewModels
Kotlin property delegate has been added to retrieve ViewModels associated with the containing Activity [ b/119050253 ] - The
by viewModels
Kotlin property delegate has been expanded to take an optional lambda method for getting theViewModelStoreOwner
, allowing you to pass in the parent Fragment or other customViewModelStoreOwner
with code such asval viewModel: MyViewModel by viewModels(::requireParentFragment)
[ b/119050253 ]
Изменения API
-
FragmentScenario
now allows you to specify a theme such asTheme.AppCompat
[ b/119054431 ]. This is a breaking change. - Added a
requireView()
method which returns a@NonNull View
or throws anIllegalStateException
[ b/120241368 ] - Added a
requireParentFragment()
method which returns a@NonNull Fragment
or throws anIllegalStateException
[ b/112103783 ]
Исправления ошибок
- Fixed IllegalStateException: Failure saving state b/120814739
- Fragments being restored from saved instance state will now always receive a non-null
Bundle
[ b/119794496 ] - Removed Fragments no longer reuse their
Lifecycle
object if re-added [ b/118880674 ]
Version 1.1.0-alpha02
3 декабря 2018 г.
Новые возможности
- FragmentScenario's Kotlin extensions now let you use a lambda for Fragment construction as an alternative to passing in a
FragmentFactory
instance. ( aosp/812913 )
Исправления ошибок
- Fixed an IllegalStateException when using nested Fragments on the back stack ( b/119256498 )
- Fixed crash when using
FragmentScenario.recreate()
with aFragmentFactory
( aosp/820540 ) - Fixed an issue where target Fragments were not accessible after the Fragment was removed ( aosp/807634 )
Version 1.1.0-alpha01
5 ноября 2018 г.
This is the first release of the fragment-testing
artifact and FragmentScenario
which is built on top of the androidx.test:core APIs. See the Fragment testing documentation for more details.
Новые возможности
- New FragmentScenario class for testing Fragments in isolation.
- You can now set a
FragmentFactory
on anyFragmentManager
to control how new Fragment instances are instantiated. - Added a new
by viewModels()
Kotlin property delegate for retrieving ViewModels from a Fragment. - Pending input events (such as clicks) are now canceled in a Fragment's
onStop()
.
Изменения API
- Significantly expanded the nullability annotations across the Fragment API surface.
Исправления ошибок
- Fix an issue which caused Fragment operations to fail from within LiveData (b/77944637)
Известные проблемы
- Target Fragments cannot be accessed after a Fragment has been removed from the FragmentManager.
-
fragment-testing
depends onandroidx.test:core:1.0.0-beta01
instead of the correctandroidx.test:core:1.0.0
.