FragmentTransaction.replace заменяет только первый фрагмент в контейнере
У меня есть два фрагмента в одном контейнере (скажем, A и B), добавленные в одной транзакции. Я стараюсь заменить их на С. Согласно документации, replace должен удалить все фрагменты из указанного контейнера, а затем добавить новый. Вместо этого он заменяет только первый. Так что я заканчиваю с фрагментами 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();