在我的活动中,我有各种各样的片段。默认情况下,活动显示地图。在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;
}
}
这里我面临一个问题:当我用片段B替换片段A时,片段B是嵌套片段,即它本身包含列表和细节片段。当我尝试删除片段B以外的任何片段时,我能够成功完成并显示默认的地图屏幕但是当我在Frgament B上并尝试删除它时,我无法看到默认的地图屏幕。而是显示空白的白色屏幕。
删除片段的步骤如下:
if (aFragment != null) {
fragmentManager.beginTransaction()
.remove(aFragment ).commit();
}//and so on...
对于有列表和详细片段的片段B,我也在片段B的onDetach中做以下,
fragmentManager.beginTransaction()
.remove(MainActivity.listFragment).commit();
注意:我没有在任何try catch中获得异常。所有代码行都没有错误地执行,包括onDetach of Fragment B。
我在这里做错了吗?任何帮助表示赞赏。