弹出片段并再次替换为同一片段时会显示空白页面

Mel*_*lon 6 android android-intent android-layout android-fragments android-fragmentactivity

我有3个片段,Frag_A,Frag_B和Frag_C.

我的导航逻辑是:Frag_A ==> Frag_B ==> Frag_C.那个Frag_A首先被添加到布局中,所以,第一次,Frag_A显示在屏幕上,然后,如果用户按下Next按钮,Frag_A被Frag_B替换,现在Frag_B显示在屏幕上,如果用户按下Next按钮, Frag_B由Frag_C替换,因此Frag_C显示在屏幕上.

在这一点上,我的代码一切正常.

更改为下一个片段的方法:

//here, argument 'fragment' is either Frag_B or Frag_C
public void showFragment(Fragment fragment){
   FragmentManager fragMgr = activity.getSupportFragmentManager();
  FragmentTransaction fragTrans = fragMgr.beginTransaction();

  fragTrans.replace(R.id.frag_placeholder, fragment, fragmentName);
  fragTrans.addToBackStack(null);

  int transId = fragTrans.commit();
  fragMgr.executePendingTransactions();

}
Run Code Online (Sandbox Code Playgroud)

活动的布局文件(当Activity启动时,Frag_A被添加到frag_placeholder):

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    >

     <FrameLayout 
        android:id="@+id/frag_placeholder"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
      />
</merge>
Run Code Online (Sandbox Code Playgroud)

但是,在显示Frag_C之后,如果我按下物理后退按钮弹出 Frag_C并showFragment(Frag_C)在我的代码检测到按下物理按钮后立即再次显示Frag_C,我会在屏幕显示一个空白页面.为什么以及如何解决它?

================说明=====================

我上面说过"*在我的代码检测到物理按钮被按下后再次显示Frag_C*",这就是我的意思:

在活动中:

@Override
public void onBackPressed() {
  super.onBackPressed();
  //I detect the Physical Back button is pressed & invoke the method to show the popped Frag_C again.
}
Run Code Online (Sandbox Code Playgroud)

Mel*_*lon 1

根据@ Luksprog 的评论,我发现如果我创建一个新实例Frag_C不是始终使用同一实例,空白页问题就会得到解决。