【发布时间】:2019-06-11 23:02:30
【问题描述】:
所以我有这个奇妙的功能:
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 只出现在开头,在循环回来之后(在抛出异常之前)片段不再显示。
这到底是怎么回事?
【问题讨论】:
标签: android android-fragments illegalstateexception