2012-11-12 50 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())) 
{ 
... 
} 
相关问题