Итак, у меня есть замечательная функция:
public static MenuPictureFragment newMenuPictureFragment(FragmentActivity fragmentActivity, String userIdParam, int containerId){
MenuPictureFragment menuPictureFragment = (MenuPictureFragment) fragmentActivity.getSupportFragmentManager().findFragmentByTag(fragmentActivity.getString(R.string.fragment_tag_menu_picture_fragment));
try {
if(menuPictureFragment == null) {
menuPictureFragment = MenuPictureFragment.newInstance(userIdParam);
}
FragmentTransaction fragmentTransaction = fragmentActivity.getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(containerId, menuPictureFragment, fragmentActivity.getString(R.string.fragment_tag_menu_picture_fragment));
fragmentTransaction.commit();
} catch (RuntimeException re){
//intentionelly empty
}
return menuPictureFragment;
}
menuPictureFragment
- это фрагмент внутри фрагмента, если я ухожу от родительского фрагмента, в какой-то момент приложение вылетает с сообщением IllegalStateException: Fragment already added
,
Разве это исключение не должно быть поймано?Добавление !menuPictureFragment.isAdded()
также не помогает.
Если я заменим fragmentTransaction.add
на fragmentTransaction.replace
, то исключение исчезнет, но menuPictureFragment
присутствует только в начале, после обхода назад (когда до исключения.был брошен) фрагмент больше не показывается.
Что, черт возьми, здесь происходит?