无法从主片段

时间:2015-07-30 05:40:03

标签: android android-fragments android-nested-fragment

在我的活动中,我有各种各样的片段。默认情况下,活动显示地图。在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上并尝试删除它时,我无法看到默认的地图屏幕。而是显示空白的白色屏幕。

删除片段的步骤如下:

if (aFragment != null) {
                        fragmentManager.beginTransaction()
                                .remove(aFragment ).commit();
                    }//and so on...

对于有列表和详细片段的FragB,我也在FragB的onDetach中做了以下,

fragmentManager.beginTransaction()
                    .remove(MainActivity.listFragment).commit();

我在这里做错了吗?任何帮助表示赞赏。

注意:我在任何try catch中都没有任何异常。所有代码行都没有错误地执行,包括onDetach of FragB。

1 个答案:

答案 0 :(得分:0)

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