Фрагменты, устаревшие в Android P

Я смотрел документацию и нашел это

Этот класс устарел на уровне API P.

Почему фрагменты, устаревшие в android P?

Ответы

Ответ 1

Переписывание в библиотеке поддержки 27.1.0

Средняя должность Яна (28 февраля 2018 года) дает нам объяснение. Он является разработчиком Android Framework в Google.

Погрузчики в библиотеке поддержки 27.1.0

Для Support Library 27.1.0 я переписал внутренности LoaderManager, класс, питающий API Loaders, и я хотел объяснить причины изменений и что ожидать в будущем.

Погрузчики и фрагменты, история
С самого начала, Погрузчики и Фрагменты были довольно тесно связаны между собой на бедре. Это означало, что много кода в FragmentActivity и Fragment были там, чтобы поддерживать Loaders, несмотря на то, что действительно существуют независимые....

Что изменилось в 27.1.0
С 27.1.0 технический долг погрузчиков значительно сократился:...

...

Примечание. Очевидно, что эти изменения применимы только к загрузчикам библиотеки поддержки. Если вы используете флеш-загрузчики Android, пожалуйста, как можно скорее переключитесь на загрузчики библиотеки поддержки. Исправлены ошибки или улучшения, запланированные для API-интерфейсов Loader.

Кажется, что код в Fragment и FragmentActivity был реорганизован, чтобы сделать Loaders дополнительной зависимостью.

Согласно примечанию к выпуску, новая реализация основана на Lifecycle.

Важные изменения
Основная реализация Loaders была переписана для использования Lifecycle.

Компоненты архитектуры

В библиотеке поддержки 26.1.0 Fragment и FragmentActivity приняли Lifecycle.

Это специальный выпуск для интеграции библиотеки поддержки с Lifecycles из компонентов архитектуры. Если вы не используете библиотеку Lifecycles, вам не нужно обновлять ее с 26.0.2. Дополнительные сведения см. В примечаниях к выпуску "Компоненты архитектуры".

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

  • Фрагмент и FragmentActivity (базовый класс для AppCompatActivity) теперь реализуют интерфейс LifecycleOwner из компонентов архитектуры.

Напротив, Fragment и Activity в Android P не реализовали интерфейс LifecycleOwner.

В сообщении Google+ (упомянутом в ответе ThanosFishermans) Ян сделал комментарий:

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

Я думаю, именно поэтому Android P не использует Lifecycle. Следовательно, Fragment устарел в Android P.

Ответ 2

Фрагменты библиотеки поддержки здесь, чтобы остаться. Google рекомендует вам использовать версии библиотеки поддержки, чтобы получить согласованное поведение на всех уровнях API, исправленные ошибки и поддержку жизненного цикла и ViewModel.

Старая ссылка Ссылка (Dead)

Новая ссылка Ссылка

Ответ 3

На случай, если кто-то ищет способ создания фрагментов по имени класса.

Старый способ:
Fragment.instantiate(context, fragmentClass)

Новый способ:

val fm: FragmentManager = ...
fm.fragmentFactory.instantiate(ClassLoader.getSystemClassLoader(), fragmentClass)

Ответ 4

Используйте supportFragmentManager вместо fragManager в Android x.