如何使用相同的按钮添加和删除片段

时间:2019-07-12 10:14:39

标签: android-fragments android-listfragment

我正在点击Button添加一个片段。我不想给一个单独的按钮来删除此片段。所以我怎么能用相同的按钮删除这个片段。 我尝试过了

 case R.id.BN_Tab:

                Fragment fragment = new Fragment_Tab();
                Fragment fragment1 = mManager.findFragmentByTag("TAB FRAGMENT");

                if (!fragment.isAdded()) {
                    mManager.beginTransaction()
                            .add(R.id.Tabs_Container, fragment, "TAB FRAGMENT")
                            .commit();
                    Log.d(TAG, "Tab Fragment is Added");

                } else if (fragment1 != null && fragment1.isResumed()) {

                    mManager.beginTransaction()
                            .remove(fragment)
                            .commit();
                    Log.d(TAG, "Tab Fragment is Removed()" );

                }

此方法继续添加相同的片段,并且永远不会触发else if()块,当我尝试使用Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.Tabs_Container);查找片段时,它将给出NPE。

1 个答案:

答案 0 :(得分:0)

现在这个简单的代码对我有用

case R.id.BN_Tab:
                Fragment fragment = mManager.findFragmentById(R.id.Tabs_Container);
                if (fragment==null) {
                    mManager.beginTransaction()
                            .add(R.id.Tabs_Container, new Fragment_Tab(), "TAB FRAGMENT")
                            .commit();

                } else  {
                    mManager.beginTransaction()
                            .remove(fragment)
                            .commit();
                }