从Activity获取嵌套片段

时间:2014-04-09 12:45:01

标签: android android-fragments fragment

我有包含片段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;
}

有人能指出我正确的方向吗?非常感谢!

1 个答案:

答案 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级别可以简化,但我猜你在其他地方重用了相同的片段。