У вас есть такая структура:
TabActivity
-> Tab1 = FragmentActivity = MainFragment
-> Tab2
-> Tab3
Внутри MainFragment
вы пытаетесь заменить содержимое его контейнера (самого себя).
Было бы лучше, если бы MainFragment
вызывал настраиваемую TabActivity, которая, в свою очередь, вызывала замену в своем контейнере, или как-то так (что может привести к нарушению той же проблемы, поскольку он в основном выполняет тот же код из того же места , но это должно дать вам базовое представление о том, что я предлагаю):
Fragment newFragment = new FragmentToChangeTo();
CustomTabActivity tabActivity = (CustomTabActivity) getActivity();
tabActivity.changeFragment(newFragment);
Если это не сработает, попробуйте сделать аналогичную вещь, но вместо того, чтобы вызывать действие, напрямую передавайте ему команды через Intents & Actions (или Bundles), содержащие информацию о том, что изменить в какой контейнер.
Я бы предпочел сказать / почему / фрагменты плохо работают с фрагментами во фрагменте и связанными с ними сложностями: отметьте здесь , чтобы понять, почему я предлагаю вырезать фрагменты из-под контроля фрагментов.