TGViewer
Android Interview Review Android Interview Review @androidsobes · 3.51K subscribers
Post #332 17.8K
Чем отличается tag в методах add() и addToBackStack()?

Tag в методе add() присваивается фрагменту. Fragment.getTag() возвращает этот тег.
Тег фрагмента используется в методе findFragmentByTag().

Tag в методе addToBackStack() это на самом деле не tag, а name. Имя транзакции, которое присваивается объекту BackStackEntry и возвращается методом getName().

Этот вопрос возник на собеседованиях, потому что когда только появились фрагменты было популярно писать такой код:

val tag = "home_fragment"
supportFragmentManager.beginTransaction()
.add(R.id.fragmentContainer, HomeFragment, tag)
.addToBackStack(tag)
.commit();

…

val lastEntryIndex = supportFragmentManager.backStackEntryCount - 1
val tag = supportFragmentManager.getBackStackEntryAt(lastEntryIndex).name
val topFragment = supportFragmentManager.findFragmentByTag(tag)


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

Удобно? Нет! Не надо так делать.

#Fragment
More from @androidsobes
  1. Sep 15, 2022Метод FragmentManager.commit() – синхронный или нет? – Асинхронный. Это значит, что транза…
  2. Sep 7, 2022Важен ли порядок, в котором добавляются операции в FragmentTransaction? Документация описы…
  3. Sep 6, 2022Расскажите про способы добавления и переключения фрагментов. Как работать с бэкстэком? Для…
  4. Sep 2, 2022Fragment Fragment используется для отображения части UI на экране. Фрагмент создается внут…
  5. Sep 1, 2022Нужно ли думать о сохранении состояния, если приложение поддерживает только портретную ори…
  6. Aug 29, 2022Activity: Как пережить поворот экрана? При повороте экрана активити уничтожается и создает…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →