В чем смысл addToBackStack (null), за которым следует commit ()?
Цитата документов:
При вызове addToBackStack () транзакция замены сохраняется в заднем стеке, поэтому пользователь может отменить транзакцию и вернуть предыдущий фрагмент, нажав кнопку «Назад».
Если вы добавляете несколько изменений в транзакцию (например, еще один add () или remove ()) и вызываете addToBackStack (), то все изменения, примененные до того, как вы вызываете commit (), добавляются в задний стек как одна транзакция и кнопка Назад изменит их все вместе.
Порядок, в котором вы добавляете изменения в FragmentTransaction, не имеет значения, за исключением:
Вы должны позвонить commit()
последним. Если вы добавляете несколько фрагментов в один и тот же контейнер, то порядок, в котором вы добавляете их, определяет порядок, в котором они отображаются в иерархии представлений.
Так что вы должны в конце концов совершить.
Почему вам нужно передать нулевой параметр в addToBackStack?
Необязательно иметь значение NULL, это может быть строка. Если не хотите, просто передайте null.
общедоступный абстрактный FragmentTransaction addToBackStack (имя строки)
Добавлено в API уровня 11. Добавьте эту транзакцию в задний стек. Это означает, что транзакция будет запомнена после того, как она будет зафиксирована, и обратит свою операцию, когда позже будет извлечена из стека.
Имя параметра Необязательное имя для этого состояния заднего стека или null.
Что касается:
Похоже, этот код бесполезен, поскольку я запускал код без последней строки .addToBackStack (null) .commit (), и он работал без каких-либо проблем
Если вы хотите перейти к предыдущему фрагменту, добавьте его в стопку. Так что это зависит от того, хотите ли вы добавить фрагмент в backstack.
Как получить этот фрагмент после такого добавления?
У вас уже есть экземпляр фрагмента firstFragment
. Так что я не понимаю, что вы имеете в виду, говоря получить фрагмент позже.
Дополнительная информация @
http://developer.android.com/guide/components/fragments.html
http://developer.android.com/reference/android/app/FragmentTransaction.html#addToBackStack(java.lang.String)