popBackStack后片段空白

时间:2015-02-27 20:31:13

标签: android android-fragments android-navigation

我有这个Activity,我用偏好片段替换主片段。当我在查看首选项后单击后退时,我会得到一个空白(白色)区域,我的片段应该是。如果我旋转屏幕然后它工作得很好。我的片段中的所有内容似乎都没问题,除非它是空白的。以下是我的方法:

活动的onCreate方法。

 @Override
    protected void onCreate(Bundle savedInstanceState) {
          .....
        if (savedInstanceState == null) {

          getFragmentManager().beginTransaction()
                    .add(MAIN_CONTAINER, new MainFragment())
                    .commit();
        }
    }

首选项片段的开始:

public void startPreferencesFragment() {
        FragmentManager mFragmentManager = getFragmentManager();
        FragmentTransaction mFragmentTransaction = mFragmentManager
                .beginTransaction();
        MyPreferencesFragment mPrefsFragment = new MyPreferencesFragment();
        mFragmentTransaction.addToBackStack(null)
                .replace(MAIN_CONTAINER, mPrefsFragment)
                .commit();
    }

我活动的onBackPressed:

@Override
    public void onBackPressed() {

        FragmentManager fm = getFragmentManager();

        if (fm.getBackStackEntryCount() > 0) {
            fm.popBackStack();

            return;

        }else {
            super.onBackPressed();
        }
    }

那么我做错了什么?

感谢。

编辑:如果我打开首选项然后旋转然后按回来,一切正常。

另外我应该提一下,删除onBackPressed方法无法解决问题,它只是退出应用程序。

编辑:根本不是片段后端堆栈的问题。基本上我的片段有一个recyclerview,就是它的全部。我在recyclelerview上设置的适配器的实例被保留,而recyclelerview本身是新的,当片段从后栈返回时,我在设置时检查适配器是否为null。

1 个答案:

答案 0 :(得分:3)

您已将事务添加到Backstack,无需覆盖onBackPressed();当按下后退按钮时,框架将自动弹出Fragment。我很确定你是" double"弹出后躯。