假设我在容器中有一个 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()))