FragmentTransaction.replace заменяет только первый фрагмент в контейнере


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

Я уже знаю, что добавление нескольких фрагментов в один контейнер считается плохой практикой. Но мне любопытно в любом случае.

Обновление: нашел это раньше: http://code.google.com/p/android/issues/detail?id=28452

1 4

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();