片段删除问题

我今天只是学习片段。 我按下一个按钮,它会添加/删除一个片段。 但是,如果我尝试删除片段,除了我要删除的片段之外的每个片段都会被删除,为什么? 第一次按下正确添加片段。

Button2 fragment: Button button = (Button) view.findViewById(R.id.button2); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ButtonFragment fragment = new ButtonFragment(); if (fragment != null && fragment.isVisible()) { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.remove(fragment).commit(); } else if(!fragment.isVisible()) { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.add(R.id.fragment_container, fragment ).commit(); } } }); return view; } } 

我在xml中有两个这样的片段:当我单击按钮时,我想要添加未在xml中定义的片段,它就是。 但是下次我按下按钮时,应删除该片段。 除了该片段之外,一切都被删除了。

          

您无法删除使用XML添加的Framgnet 。 如果要通过.remove方法删除片段,首先应通过.add方法将其添加到布局中,而不是将其嵌入到XML文件中。 在这种情况下,您只能.show.show Fragments

更新:

要动态添加ButtonFragment请执行以下操作:

 ButtonFragment buttonsFragment = new ButtonFragment(); newfragmentTransaction = fragmentManager.beginTransaction(); newfragmentTransaction.add(R.id.containerForFragments, buttonsFragment ).commit(); 

更新2:此代码:

  Button button = (Button) view.findViewById(R.id.button2); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ButtonFragment fragment = new ButtonFragment(); if (fragment != null && fragment.isVisible()) { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.remove(fragmentManager.findFragmentById(R.layout.activity_main)).commit(); } else if(!fragment.isVisible()) { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.add(R.layout.activity_main, fragment ).commit(); } } }); 

应该从Activity运行而不是从Fragment