Android 无法从主片段中完全删除嵌套片段
在我的活动中,我有各种各样的片段。默认情况下,“活动”显示地图。单击listitem时,将使用以下代码显示片段A、B或C: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
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()
的等效项。但是,同样的问题。