回答
你可以試試下面的代碼
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. 片段沒有被刪除
- 7. 無法刪除所有容器連續
- 8. 從FragmentStatePagerAdapter填充的ViewPager中刪除所有片段
- 9. 刪除片段
- 10. 刪除片段)
- 11. 刪除所有內容
- 12. 刪除文件中的所有內容
- 13. 從列表中刪除所有內容
- 14. 刪除jQuery中的某個位置後的所有容器
- 15. 製作動畫片段刪除它的所有子節點
- 16. 刪除Android上的所有照片
- 17. 所有在Azure存儲帳戶中刪除的容器
- 18. 如何刪除容器中的所有兒童組件?
- 19. 刪除容器中的所有空值X ++
- 20. 刪除使用jQuery後的時間段和所有內容
- 21. 刪除片段並沒有給出以前的片段焦點
- 22. Android刪除當前片段並獲取刪除片段名稱
- 23. 片段替換刪除其他片段
- 24. 替換片段刪除另一片段
- 25. 刪除每個段落中除第一個單詞外的所有內容
- 26. 替換片段的內容並刪除舊內容 - Android應用
- 27. 如何刪除特定標籤觸發器的所有sublime片段?
- 28. 崩潰的刪除片段
- 29. 刪除「?」後的所有內容python
- 30. 刪除mysql#1前的所有內容
的可能的複製[片段:在一個視圖中刪除所有片段](http://stackoverflow.com/questions/14764043/fragments-remove -all-fragments-in-a-view) – ThomasThiebaud