Как можно добавлять и переключать фрагменты? Как работать с бэкстэком?
Если не говорить про NavigationComponent из Jetpack, то для добавления, переключения и удаления фрагментов используются два класса, FragmentManager и FragmentTransaction, но на самом деле почти все происходит в FragmentTransaction, менеджер нужен только чтобы получить транзакцию.
Получить транзакцию можно методом менеджера beginTransaction(). Чтобы добавить фрагмент используется метод add(), чтобы заменить replace(), а чтобы удалить remove(). Транзакция может принимать несколько методов.
Метод add() принимает в качестве аргументов id View, в который будет помещен фрагмент (сейчас рекомендуется в качестве контейнеров для фрагментов использовать FragmentContainerView), а также сам фрагмент (либо класс фрагмента). Так же опционально можно передать args и tag
Метод replace() принимает все то же самое что и add в качестве аргументов, за исключением класса. Заменять фрагменты можно только объектами.
Метод remove() принимает только объект класса Fragment.
После вызова всех методов необходимо вызвать метод commit() транзакции, таким образом все изменения вступят в силу. Так же можно вместо использования beginTransaction() и commit() использовать метод fragmentManager.commit { }, который автоматически вызовет beginTransaction() и commit(), но для этого необходимо подключить библиотеку fragment-ktx
Бесплатные Telegram-боты для обучения
Практика с проверкой кода и помощью ИИ-ментора
AndroidSprint AI Mentor
Проверяет Pull Request'ы в GitHub, проводит тестовые собеседования с голосом и таймером, помогает разбираться с кодом 24/7
Попробовать ИИ-ментора →KotlinSprint Bot
22 урока Kotlin, 220 тестов, 120 практических задач с код-ревью
Начать обучение Kotlin →