2

我在哪裏出錯了。我只想檢查帶有給定ProductId的片段是否已經在BackStack中可用;findFragmentByTag總是返回null

如果是,不要添加新的片段,否則將當前片段添加到後臺堆棧。

public void showThisFragment(Fragment newFragment,int productId){ 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.am_fragment_holder, newFragment); 
    if(fragmentManager.findFragmentByTag(productId+"")==null){ 
     fragmentTransaction.addToBackStack(productId+""); 
    }else{ 
     //TODO fragment already present 
     //So dont add to the back stack 
    }  
    fragmentTransaction.commit(); 
} 

請大家幫忙!

+0

您必須使用一個鍵將片段添加到堆棧,這不同於首先使用鍵添加片段。或者你可以通過直接搜索後臺來查找關鍵字。有一個很好的寫作[這裏。](http://stackoverflow.com/questions/9702216/get-the-latest-fragment-in-backstack) – NameSpace

+0

我不能使用鍵添加它..,在我的情況下標籤是什麼我有。你能幫助我對目前的代碼進行一些修改嗎? – AabidMulani

回答

1

沒有標籤添加到替換片段。你應該使用三個參數替換方法。我沒有測試它,所以告訴我,如果我是對的。

fragmentTransaction.replace(R.id.am_fragment_holder, newFragment, String.valueOf(productId)); 
+0

沒有幫助...獲得意想不到的輸出... – AabidMulani

+0

好的。然後我將編譯你的代碼。敬請關注。 –