我有包含片段F的活动A.在Fragment F的xml文件中,我有一个名为" frame"的FrameLayout。在这个容器中,我每当需要时加载片段X和Y.
现在,有没有办法让我确定片段F当前正在显示X和Y之间的哪个?
在活动A中,我想实现
onBackPressed(){
if(F is displaying X)
super.onBackPressed();
else //Y is currently displayed
//replace fragment Y with fragment X
我认为我可能需要致电
getSupportFragmentManager().findFragmentByTag("F"). ??
这是我替换X和Y的方式
public void showFragment(Fragment f){
getChildFragmentManager().beginTransaction().replace(R.id.container, f).commit();
currentChildFragment = f;
}
有人能指出我正确的方向吗?非常感谢!
答案 0 :(得分:5)
如果我做对了,你有活动 - >使用容器和容器中的片段,在X和Y之间放置/替换片段。为什么你有片段(F)级别?
无论如何,您正在使用id替换片段,因此您可以使用findFragmentById
检索当前片段Fragment fragment = getChildFragmentManager().findFragmentById(R.id.container);
if(fragment != null){
if(fragment instanceof FragmentX) (..)
else (..)
}
该代码可以作为F片段的方法包含(因为我们使用getChildFragmentManager())。要将该信息发送回活动本身,必须找到F片段(它必须具有id)并调用该方法来检查显示哪个片段(X或Y)。如果你删除片段F级别可以简化,但我猜你在其他地方重用了相同的片段。