Важен ли порядок, в котором добавляются операции в FragmentTransaction?



Документация описывает два случая, в которых порядок важен:



1. Метод commit() должен вызываться последним.



2. Если несколько фрагментов добавляются в один контейнер, то порядок добавления определяет порядок в котором фрагменты отрисовываются в иерархии view.



Есть еще третий случай. Если метод addToBackStack(String name) вызывается несколько раз на одной транзакции, то транзакция добавляется в бэкстэк один раз с тегом, который передается в последнем вызове метода.



Пример:



supportFragmentManager.beginTransaction()

.add(R.id.fragmentContainer, Fragment1())

.addToBackStack("add1")

.add(R.id.fragmentContainer, Fragment2())

.addToBackStack("add2")

.commit()




Создается одна транзакция с тегом add2, которая добавляет сразу два фрагмента. При нажатии кнопки Back оба фрагмента будут удалены.



Поведение нескольких addToBackStack() не задокументировано и может различаться на разных версиях ОС, так что не забудьте на собеседовании сказать, что вы бы так никогда делать не стали.



#Fragment



@android_its