【问题标题】:How to delete specific fragment from layout如何从布局中删除特定片段
【发布时间】:2019-06-17 10:30:27
【问题描述】:

我在主页布局中有 4 个片段。当用户按下相应的按钮时,我想删除特定的片段。当我使用popBackStack() 执行此操作时,它会删除用户最近添加的片段。那么如何从屏幕上删除特定片段。

我在按钮单击时添加片段,我还有 3 个相同的添加按钮。

addFragment_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FragmentManager fm = getSupportFragmentManager();
            fm.beginTransaction()
                    .add(R.id.Fragment_container_1, new Fragment_1(), "Frag 1")
                    .addToBackStack("Frag 1")
                    .commit();
        }
    });

然后我想通过单击其他按钮来删除此片段。还添加了 3 个删除按钮。

 removeFragment_1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getSupportFragmentManager().popBackStack();
        }
    });

我有 4 个添加按钮和 4 个删除按钮。当我在屏幕上添加所有 4 个片段然后按下第一个删除按钮时,它会删除第 4 个片段,然后 3 > 2>1 并且所有 4 个删除按钮都这样做。我想要 1 个删除按钮只删除一个相应的片段。

我也尝试popBackStack ("Frag 1", 0) 它删除除片段 1 之外的所有 3 个片段,当我尝试 popBackStack("Frag 1", FragmentManager.POP_BACK_STACK_INCLUSIVE) 它删除所有 4 个片段。

我的英语不太好,我想要一些详细的答案。谢谢

【问题讨论】:

  • 分享您如何执行片段删除的代码。这将有助于回答您在代码中遇到的问题

标签: android android-layout android-fragments fragment-backstack


【解决方案1】:
Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
if(fragment != null)
getSupportFragmentManager().beginTransaction().remove(fragment).commit();

这必须有效。

【讨论】:

  • 如果有效。您可以接受答案,以便帮助他人。 @neo
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2016-09-30
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 2015-07-13
相关资源
最近更新 更多