所以我有一个很棒的功能:
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.replace
替换fragmentTransaction.add
,异常就会消失,但menuPictureFragment
只出现在开头,在循环返回之后(当异常被抛出之前),片段不再显示。
见鬼,这是怎么回事?
https://stackoverflow.com/questions/56533486
复制相似问题