FragmentTransaction.replace заменяет только первый фрагмент в контейнере
У меня есть два фрагмента в одном контейнере (скажем, A и B), добавленных в одной транзакции. Я пытаюсь заменить их на C. Согласно документации, замена должна удалить все фрагменты из указанного контейнера, а затем добавить новый. Вместо этого он заменяет только первый. В итоге я получаю фрагменты B и C. Это меня сильно смущает. Это ошибка или что?
Я уже знаю, что добавление нескольких фрагментов в один контейнер считается плохой практикой. Но мне все равно любопытно.
ОБНОВЛЕНИЕ: обнаружил, что раньше: http://code.google.com/p/android/issues/detail?id=28452
1 ответ
Решение
Я думаю, что вы делаете так:
Fragment fragmentA = (getFragmentManager().findFragmentById(R.id.fragmentC));
Fragment fragmentB = (getFragmentManager().findFragmentById(R.id.fragmentB));
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragmentA);
ft.remove(fragmentB);
ft.commit();
А потом просто добавьте новый фрагмент.
getSupportFragmentManager().beginTransaction().add(R.id.container, fragmentC).commit();