IllegalStateException:片段已添加

时间:2018-09-25 20:23:37

标签: java android android-fragments

我收到此错误:

java.lang.IllegalStateException: Fragment already added: MenuBottomSheetFragment{d476429 #0}
    at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1891)
    at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:760)

打开我的代码后,单击MenuBottomSheetFragment

private void openBottomSheet() {
        if (mMenuBottomSheetFragment == null)
            mMenuBottomSheetFragment = new MenuBottomSheetFragment();
        if (!mMenuBottomSheetFragment.isShowing())
            mMenuBottomSheetFragment.show(getSupportFragmentManager(), mMenuBottomSheetFragment.getTag());
    }

我的MenuBottomSheetFragment没什么特别的。

我真的不知道为什么。在大多数情况下,MenuBottomSheetFragment可以正常工作。但是有一段时间,它会抛出此 Exception ,然后我什么也不做。

那么我的问题是什么?我该如何解决?

2 个答案:

答案 0 :(得分:5)

用以下内容替换isShowing:

 if(!mMenuBottomSheetFragment.isAdded()) {
      mMenuBottomSheetFragment.show(getSupportFragmentManager(), mMenuBottomSheetFragment.getTag());
 }

答案 1 :(得分:1)

该片段已被添加。无需再次显示。只需在null-检查之后检查一下,然后返回是否添加了

if(mMenuBottomSheetFragment.isAdded()) {
    return;
}