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

代码很简单:

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

现在的问题是,我要确保fragmentToAdd与我将替换的 fragment 不同。

如果是这种情况,则该应用程序不应执行任何操作。

因此,我可以获得原始的Fragment:
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(FragmentfragmentA,FragmentfragmentB)的代码是什么?

感谢您的帮助。

编辑

我知道我可以做类似的事情:
if (fragmentToAdd instanceof FragmentA)

但是我是否有FragmentA,FragmentB,...。Fragment F,我不想为每种Fragment类型使用'if'。

最佳答案

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

10-01 02:43