Android 从活动中获取嵌套片段

Android 从活动中获取嵌套片段,android,android-fragments,fragment,Android,Android Fragments,Fragment,我有一个包含片段F的活动A。在片段F的xml文件中,我有一个名为“container”的框架布局。在这个容器中,每当需要的时候,我都会加载片段X和Y 现在,有没有一种方法可以让我确定片段F当前显示的是X和Y之间的哪一个 在活动A中,我想实现 onBackPressed(){ if(F is displaying X) super.onBackPressed(); else //Y is currently displayed //replace f

我有一个包含片段F的活动A。在片段F的xml文件中,我有一个名为“container”的框架布局。在这个容器中,每当需要的时候,我都会加载片段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;
}

谁能给我指出正确的方向吗?非常感谢

如果我没弄错的话,你可以使用Activity->Fragment和container,在这个container中,你可以在X和Y之间放置/替换片段。为什么要使用Fragment(F)级别

无论如何,您要用id替换片段,这样就可以用id检索当前片段

该代码可以包含为F片段的一个方法(正如我们使用getChildFragmentManager())。要将该信息发送回活动本身,必须找到F片段(它必须有一个id)并调用该方法,在该方法中检查显示了哪个片段(X或Y)。如果你删除F级的片段,它可以被简化,但是我想你可以在其他地方重用相同的片段

Fragment fragment = getChildFragmentManager().findFragmentById(R.id.container);
if(fragment != null){
  if(fragment instanceof FragmentX) (..)
  else (..)
}