tgoop.com/AndroidSobes/329
Last Update:
Расскажите про способы добавления и переключения фрагментов. Как работать с бэкстэком?
Для управления фрагментами используются два класса: FragmentManager и FragmentTransaction.
Для получения FragmentManager
используются метод активити getSupportFragmentManager()) или метод фрагмента getChildFragmentManager()).FragmentManager
начинает транзакцию и возвращает объект FragmentTransaction
вызовом метода beginTransaction().
Методы класса FragmentTransaction
, которые необходимо знать - add()
, remove()
и replace()
.
add() добавляет фрагмент на активити или другой фрагмент. Принимает аргументами containerViewId
, в который добавляется фрагмент, инстанс фрагмента, тег.
Другой способ добавить фрагмент - определить в лэйауте с помощью тега <fragment>
.
remove() - операция, обратная add()
. Удаляет фрагмент.
replace() удаляет все фрагменты, добавленные методом add()
в заданный контейнер, и добавляет переданный аргументом фрагмент в контейнер. Параметр tag
может быть null.
Эти операции не выполняются сразу же после вызова методов. Метод commit() завершает транзакцию и выполняет операции транзакции.
Метод addToBackStack() добавляет транзакцию в Back Stack. Это значит, что когда пользователь нажмет Back транзакция откатится. addToBackStack()
применяется ко всем операциям в транзакции. Например следующий код добавляет транзакцию из трех операций в бэкстэк:fragmentTransaction
.add(R.id.fragmentContainer1, fragment1)
.add(R.id.fragmentContainer2, fragment2)
.replace(R.id.fragmentContainer1, fragment3)
.addToBackStack("tag")
.commit()
Метод popBackStack() удаляет транзакцию с верхушки бэкстэка, возвращает true
, если бэкстэк хранил хотя бы одну транзакцию.
Документация.
#Fragment
BY Android Interview Review
Share with your friend now:
tgoop.com/AndroidSobes/329