这是负责将片段添加到返回堆栈的函数:
public void populateContent(File f)
{
ContentFragment cf = new ContentFragment(ctx, ac, this);
FragmentTransaction transaction = ac.getSupportFragmentManager().beginTransaction();;
cf.updateView(f);
transaction.replace(R.id.contentFragment, cf);
transaction.addToBackStack(null);
transaction.commit();
}
当我单击后退按钮时,最后一个片段不会加载(什么也没有发生)。
知道是什么原因造成的吗?
编辑:FragmentManager 日志。
http://pastebin.com/mYnVdkLG http://pastebin.com/mYnVdkLG
在我看来,好像我的应用程序将第二个视图保存两次,而不是保存第一个视图,然后保存第二个视图。
看来在片段事务上调用 addToBackStack() 是不够的,我们必须处理我们自己按下“后退”按钮时弹出的后退堆栈。我将其添加到我的活动中并且它按预期工作:
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0 ){
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)