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();
Другие вопросы по тегам