我有这个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。
答案 0 :(得分:3)
您已将事务添加到Backstack,无需覆盖onBackPressed()
;当按下后退按钮时,框架将自动弹出Fragment
。我很确定你是" double"弹出后躯。