Я много искал и нашел много объяснений по Интернету, но моя путаница все еще там о Fragments
и FragmentManager
и findFragmentByTag
Предположим, у меня есть три фрагмента FragmentA,FragmentB,FragmentC
и A, B, C являются их тегами соответственно
Я выполнил FragmentTransaction
в такой последовательности:
1- Добавить FragmentA {BackStackEntryCount = 1, BackStack = [A]}
2- Добавить фрагмент B {BackStackEntryCount = 2, BackStack = [B, A]}
3- Добавить фрагмент A {BackStackEntryCount = 3, BackStack = [A, B, A]}
4- Добавить фрагментC {BackStackEntryCount = 4, BackStack = [C, A, B, A]}
5- Заменить фрагментA {BackStackEntryCount = 5, BackStack = [A]}
После шага 5 он показывает, что replace
удалит (уничтожит) все существующие fragments
из BackStack
и добавит новый, но BackStackEntryCount
, показывая, что он запомнил / сохранил 5 транзакций. Итак, у меня есть FragmentA
сверху и показывает пользователю.Проблема в том, что если сейчас я выполню:
supportFragmentManager.findFragmentByTag("A") // returns null But it should return FragmentA? But why it is returning null?
supportFragmentManager.fragments // shows that FragmentA in returned List
Я считаю, что BackStackEntryCount
запомнил только общее количество транзакций, сохраненных addToBackStack("SOME_TAG" or null)
, но не обновляет его, когда replace
удаляет все фрагменты из FragmentManager
.Пожалуйста, помогите мне прояснить мое понимание.