2012-11-12 51 views
3

假設我在容器內有一個片段,我應該用另一個片段替換它。如何判斷2個片段是否有來自同一類的實例

的代碼非常簡單:現在我想確保fragmentToAdd是不相似的片段,我會代替

getSupportFragmentManager().beginTransaction(). 
replace(R.id.content_frame,fragmentToAdd).addToBackStack(null).commit(); 

的問題。

如果是這種情況,應用程序應該什麼都不做。

所以,我可以得到原始片段:

Fragment originalFragment=(Fragment) getSupportFragmentManager().findFragmentById(R.id.content_frame); 

,並最終代碼會是這樣的:

if (haveDifferentInstance(originalFragment,fragmentToAdd)){ 
    getSupportFragmentManager().beginTransaction(). 
    replace(R.id.content_frame,fragmentToAdd).addToBackStack(null).commit();} 
else 
    // Do nothing 

那麼,什麼可能是haveDifferentInstance(片段fragmentA,片段代碼fragmentB)?

感謝您的幫助。

編輯

我知道我能做到像somethinh:

if (fragmentToAdd instanceof FragmentA) 

但我有FragmentA,FragmentB,....片f,我不希望使用'如果'每種類型的片段。

+0

爲什麼在添加Fragment後設置Tag參數然後使用findFragmentByTag(String tag)? – techiServices

回答

10

檢查如果類是相等的:if(origianalFragment.getClass().equals(fragmentToAdd.getClass()))

0

您可以檢查simplename。

if (fragmentToAdd.class.getSimpleName().equals(originalFragment.getClass().getSimpleName())) 
{ 
... 
} 
相關問題