回答
你可以试试下面的代码
getSupportFragmentManager().beginTransaction().remove(frag).commit();
*断枝是要删除片段的对象。
OR
getFragmentManager().beginTransaction().remove(getFragmentManager().findFragmentById(R.id.your_container)).commit();
它将删除“your_container”容器中的片段。
HapPy编码。
我如何确定frag对象容器视图是R.id.mycontainer? –
这只是给你参考,你可以用你的ID替换。 –
谢谢@ user1632209 –
将所有片段保存在ArrayList中。
初始化:
List<Fragment> activeCenterFragments = new ArrayList<Fragment>();
添加片段列表:
private void addCenterFragments(Fragment fragment) {
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.empty_center_layout, fragment);
activeCenterFragments.add(fragment);
fragmentTransaction.commit();
}
当要删除所有他们,做到以下几点:
private void removeActiveCenterFragments() {
if (activeCenterFragments.size() > 0) {
fragmentTransaction = fragmentManager.beginTransaction();
for (Fragment activeFragment : activeCenterFragments) {
fragmentTransaction.remove(activeFragment);
}
activeCenterFragments.clear();
fragmentTransaction.commit();
}
}
我已经使用这个在生产中使用多年的方法,它的作用就像魅力。如果您有任何问题,请告诉我。通过所有的片段
,谢谢:) –
它非常简单只是循环,将其取下
for(Fragment fragment:getSupportFragmentManager().getFragments()){
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}
但抽屉式导航的情况下一定要检查它,如果你尝试删除它,你会得到错误。做任何片段交易
for(Fragment fragment:getSupportFragmentManager().getFragments()){
if(fragment instanceof NavigationDrawerFragment)
continue;
else {
if(fragment!=null)
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}
}
这的确是很简单的前
for(Fragment fragment:getSupportFragmentManager().getFragments()){
if(fragment instanceof NavigationDrawerFragment)
continue;
else {
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}
}
最后,但很重要的一定要检查空。
private static void removeAllFragments(FragmentManager fragmentManager) {
while (fragmentManager.getBackStackEntryCount() > 0) {
fragmentManager.popBackStackImmediate();
}
}
试试这个,希望它有助于:d
try {
if(manager.getFragments()!=null){
if(manager.getBackStackEntryCount()>0) {
for (int i = 0; i < manager.getBackStackEntryCount(); i++)
manager.popBackStack();
manager.beginTransaction().remove(getSupportFragmentManager()
.findFragmentById(R.id.main_content))
.commit();
}
}
}catch (Exception e){
e.printStackTrace();
}
这种检查是不必要的: “if(manager.getBackStackEntryCount()> 0){” 因为它永远不会传递无论如何,如果这是错误的循环。 – Erik
- 1. 删除容器时不会删除动态添加的片段
- 2. 删除容器外的所有元素?
- 3. 删除所有内容
- 4. 删除文件中的所有内容
- 5. 删除Android上的所有照片
- 6. 所有在Azure存储帐户中删除的容器
- 7. Android删除当前片段并获取删除片段名称
- 8. 删除使用jQuery后的时间段和所有内容
- 9. 替换片段删除另一片段
- 10. 崩溃的删除片段
- 11. 如何删除特定标签触发器的所有sublime片段?
- 12. MySQL删除之前的所有内容/
- 13. 删除括号内的所有内容
- 14. 删除所有文件夹的内容
- 15. 删除“?”后的所有内容python
- 16. 删除mysql#1前的所有内容
- 17. Css:hover从父容器中删除所有其他样式
- 18. 删除片段中的边距
- 19. 删除堆栈中的顶部片段
- 20. 删除内容并显示JAVA中的所有内容
- 21. 删除另一个片段活动中的片段
- 22. 动画删除片段
- 23. 片段删除问题
- 24. X3DOM删除片段平面
- 25. 使用popBackStack()删除片段;
- 26. 删除片段问题
- 27. git pull subtree删除所有内容
- 28. TabHost删除所有内容活动
- 29. Gsutil rm不会删除所有内容
- 30. 从片段范围内的节点中删除所有ID属性
的可能的复制[片段:在一个视图中删除所有片段](http://stackoverflow.com/questions/14764043/fragments-remove -all-fragments-in-a-view) – ThomasThiebaud