Android 无法从主片段中完全删除嵌套片段

Android 无法从主片段中完全删除嵌套片段,android,android-fragments,android-nested-fragment,Android,Android Fragments,Android Nested Fragment,在我的活动中,我有各种各样的片段。默认情况下,“活动”显示地图。单击listitem时,将使用以下代码显示片段A、B或C: protected void replaceFragment(int i) { FragmentManager fragmentManager = getFragmentManager(); android.app.FragmentTransaction fragmentTransaction = fragmentManager .b

在我的活动中,我有各种各样的片段。默认情况下,“活动”显示地图。单击listitem时,将使用以下代码显示片段A、B或C:

protected void replaceFragment(int i) {
    FragmentManager fragmentManager = getFragmentManager();
    android.app.FragmentTransaction fragmentTransaction = fragmentManager
            .beginTransaction();
    switch (i) {
    case FRAGMENT_A:
        aFragment = new AFragment ();
        fragmentTransaction.replace(R.id.main_framelayout_replace,
                aFragment , TAG_A_FRAGMENT);
        fragmentTransaction.commit();
        break;//and so on.....
     default:
        break;
    }
}
这里我面临一个问题:当我用FragB替换FragA时,FragB是嵌套片段,即它本身包含列表和细节片段。当我尝试删除FragB以外的任何片段时,我能够成功地完成并显示默认地图屏幕,但当我在FragB上尝试删除它时,我无法看到默认地图屏幕。相反,将显示一个空白的白色屏幕

按照以下步骤移除碎片:

if (aFragment != null) {
                        fragmentManager.beginTransaction()
                                .remove(aFragment ).commit();
                    }//and so on...
对于有列表和详细片段的FragB,我在FragB的onDetach中也做了如下操作:

fragmentManager.beginTransaction()
                    .remove(MainActivity.listFragment).commit();
我做错什么了吗?谢谢你的帮助


注意:我没有在任何try-catch中得到任何异常。所有代码行都被正确执行,包括片段的onDetach。

在您的片段类(扩展片段)中,您应该使用ChildFragmentManager来管理嵌套片段。

也尝试过,但没有成功。。。还是一样的空白屏幕问题。你的代码片段有点太稀疏了。我不知道您是否在FragA上同时调用replace()和remove()。如果调用replace(),则无需显式删除FragA、FragB或FragC。唯一需要显式删除的片段是FragB的子片段。每当我需要在片段之间切换时,我都使用replace。当我需要导航到主屏幕时,我使用remove。但是FragB是嵌套片段,除了为FragB本身调用remove之外,我还在FragB的ondeach中为子片段调用remove方法。我想你可能在复制。我在Activity.onCreate()期间为所有片段创建一次基类,然后根据需要在FragmentTransaction.replace()中重用它们。我移动了
affragment=newaffragment()和从MainActivity的
replaceFragment()
onCreate()
的等效项。但是,同样的问题。