7

假设我在容器中有一个片段,我应该用另一个片段替换它。

代码很简单:

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

现在的问题是我想确保 fragmentToAdd 与我将替换的片段不相似。

如果是这种情况,应用程序应该什么都不做。

所以,我可以得到原来的片段:

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(Fragment fragmentA, Fragment fragmentB) 的代码可能是什么?

感谢您的帮助。

编辑

我知道我可以做类似的事情:

if (fragmentToAdd instanceof FragmentA)

但是我有 FragmentA、FragmentB、.... Fragment F,我不想对每种类型的 Fragment 使用“if”。

4

2 回答 2

17

检查类是否相等:if(origianalFragment.getClass().equals(fragmentToAdd.getClass()))

于 2012-11-12T21:49:42.273 回答
0

您可以检查简单名称。

if (fragmentToAdd.class.getSimpleName().equals(originalFragment.getClass().getSimpleName()))
{
...
}
于 2017-09-19T14:33:39.683 回答