我的项目包含两个片段:
- 片段A:应用程序启动时默认加载的片段
- 片段B:当点击按钮时替换
fragmentA
。
这是我的主视图的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/main_fragment_container"
android:name="fragmentA"
android:layout_width="match_parent"
android:layout_height="match_parent">
</fragment>
</LinearLayout>
当我希望用FragmentB
替换FragmentA
时,我使用以下代码:
FragmentTransaction fragmentTransaction = getSupportFragmentManager()
.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.main_fragment_container, new FragmentB());
fragmentTransaction.commit();
这段代码运行良好。我的FragmentA被新的FragmentB
替换了。但是当点击返回按钮时,我希望使用popBackStackImmediate()
将FragmentB
替换为FragmentA
。
这是我使用的代码:
if (getSupportFragmentManager().getBackStackEntryCount() > 0){
boolean done = getFragmentManager().popBackStackImmediate();
fragmentTransaction.commit();
}
popBackStackImmediate
函数总是返回 false,导致 FragmentB
仍在前台显示。
为什么当我调用 popBackStackImmediate
后,FragmentA
没有替换掉 FragmentB
呢?有没有人有解决问题的思路?
谢谢提前。