Connect with us

Разработка

Открываем AndroidFragment: перенос навигации из Фрагментов в Compose

Это позволит нам переходить на Compose постепенно, что является огромным преимуществом!

Опубликовано

/

     
     

С момента выхода Jetpack Compose в 2021 году многие разработчики Android перевели свои приложения на этот новый UI-фреймворк. Однако одной из самых больших проблем является перенос системы навигации со старой, основанной на Фрагментах, на новую, основанную на Compose.

Основной план перехода с Fragments на Compose заключался в следующем:

  1. Использовать Compose в качестве пользовательского интерфейса внутри Фрагментов.
  2. Сделать всю инфраструктуру, созданную в Fragments, в Compose (Analytics и т. д.)
  3. Заменить навигацию, основанную на Фрагментах, на навигацию, основанную на Compose.

Для небольших проектов это легко сделать за несколько дней, но для крупных компаний это огромная задача, которая, вероятно, не сделать и в течение многих лет!

Поэтому вместо того, чтобы переносить все фрагменты один за другим, есть ли способ просто использовать Фрагменты внутри Compose?

AndroidViewBinding

Это действительно возможно с помощью AndroidViewBinding, но только если наш фрагмент не имеет аргументов, потому что он использует преимущества FragmentContainerView, в котором имя класса фрагмента объявляется в XML и инстанцируется для нас под капотом:

Макет dashboard_fragment.xml выглядит следующим образом:

AndroidFragment

AndroidFragment — это новый @Composable, который позволяет нам использовать фрагменты непосредственно в Compose.

Внутри нашего собственного @Composable мы можем использовать AndroidFragment следующим образом:

AndroidFragment доступен в библиотеке androidx.fragment:fragment-compose с версии 1.8.0-alpha01. Нужно  добавить следующее в libs.version.toml:

И добавить эту зависимость в наш модуль приложения build.gradle.kts:

⚠️ Это все еще альфа, поэтому я бы подождал, пока версия 1.8.0 станет стабильной, прежде чем использовать ее в проде.

Документация доступна здесь.

Заключение

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

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: