tgoop.com/AndroidSobes/332
Last Update:
Чем отличается 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
BY Android Interview Review
Share with your friend now:
tgoop.com/AndroidSobes/332