У меня есть FragmentTabHost, и у меня есть добавленная вкладка пользователя следующим образом:

mTabHost.addTab(mTabHost.newTabSpec("usertab").setIndicator(uti), LoginTab.class, null);

Когда пользователь вошел в систему, я хочу изменить класс для этой вкладки на UserTab, что я делаю следующим образом:

getSupportFragmentManager()
                .beginTransaction()
                .replace(android.R.id.tabcontent, new UserTab(), "usertab")
                .commit();

однако, если пользователь находится на другой вкладке, содержимое вкладки, на которой находится пользователь, изменяется (это просто замена содержимого макета содержимого вкладки, которое подключено к текущей выбранной вкладке), я надеялся, что добавление параметра тега в функция replace могла бы помочь, но это не так (что она вообще делает?, потому что она не делает ничего другого, чем когда я ее не использую).

Является ли мой единственный вариант программно изменить вкладку на пользовательскую до того, как я совершу транзакцию, или есть лучший способ?

(кстати, это моя первая игра с феноменом всего фрагмента)

отвечать

Вы должны изменить FragmentTabHost для TabLayout в паре с просмотрщиком , это хороший пример ; если вы не можете заменить фрагментTabHost, я рекомендую вам выполнять транзакции фрагментов без .replace(), потому что он имеет неожиданное поведение при извлечении транзакций обратного стека, что может быть проблемой, которую вы видите сейчас