У меня была похожая проблема.Как я уже упоминал в своем комментарии, мое приложение работает нормально на физических устройствах, но вылетает на эмуляторе.Я не уверен, почему он выдает эту ошибку Fragment already added
, но я нашел обходной путь.
Прежде чем пытаться заменить фрагмент, я сначала удаляю его (что кажется нелогичным, но мне кажется, что это работает)используя блок try-catch.
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
try
{
fragmentTransaction.remove(guideFragment);
}
catch(IllegalStateException e)
{
e.printStackTrace();
}
fragmentTransaction.replace(R.id.container, guideFragment, GUIDE_FRAGMENT_TAG);
fragmentTransaction.commit();
Кажется, что метод replace () имеет некоторые странные поведения, которые не всегда работают так, как вы ожидаете. Другие также должны были использовать обходные пути.