2017-07-13 132 views
1

我有一個片段,我有一個標籤添加這樣的:片段交易移除

getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,fragment,fragment_tag).commit(); 

在某些時候,在另一個片段,我需要刪除此片段,所以我呼籲:

fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag); 
if(fragment != null && fragment.isAdded()) 
    fragmentManager.beginTransaction().remove(fragment).commit(); 

從理論上講,下一次我打電話findFragmentByTag()我剛剛刪除的片段,我應該得到一個空,但下一次我稱之爲:

fragment = getActivity().getSupportFragmentManager().findFragmentByTag(fragment_tag); 
if(fragment != null) 

的,如果因此它實際上找到與該標記片段說法是正確的!

我的問題是,我如何COMPLETELY刪除一個片段?

考慮到要移除的碎片可能不在頂層,這意味着popBackStack()不是解決方案。

回答

0

在刪除片段,它可能仍然是在片段經理回棧,所以要完全刪除它,你必須刪除,如果從片段經理回棧,所以你必須使之彈出返回堆疊的調用fragmentManager.popBackStack(字符串,int)方法...

退房的方法 Fragment Manager pop back stack method

+0

感謝您的關注。檢查我編輯的問題。該片段可能不返回堆棧 – Ricardo

+0

你嘗試它的頂部?如果你想立即刪除它,你可以調用popackStackImmeditely(); – Ogbe

+0

我確實嘗試過。我已經在尋找其中存在此​​解決方案,但它不能幫助我的情況 – Ricardo

-1
int index = getSupportFragmentManager().getFragments().indexOf(oldfragment); 
     getSupportFragmentManager().getFragments().set(index, null); 
+0

請註明一些有關這將如何解決問題,或者這將完成 – Abhijeetk431