首页 > 解决方案 > 即使我执行 addToBackStack(null),为什么 FragmentManager 的 BackStackEntry 为 0

问题描述

private BaseFragment fragment;
private FragmentManager fragmentManager;
private FragmentManager fragmentManager1;
private FragmentTransaction aFragmentTransaction;

这是我的 OnCreate() 方法中的代码:

fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, 
fragment).commit();
fragmentTitle = getResources().getString(fragment.getFragmentTitle());
setTitle(fragmentTitle);

....更多代码...

aFragmentTransaction = fragmentManager.beginTransaction();
aFragmentTransaction.replace(R.id.frame_container, fragment);
aFragmentTransaction.addToBackStack(null);
aFragmentTransaction.commit();
setTitle(getResources().getString(fragment.getFragmentTitle()));

这是 OnBackPressed() 方法中同一活动中的代码:

@Override
public void onBackPressed(){

fragmentManager1 = getSupportFragmentManager();
if (fragmentManager1.getBackStackEntryCount() > 0) {
    fragmentManager1.popBackStack();
} else {
    super.onBackPressed();
}

两者都在同一个活动中。当我调试时,BackStack 有 0 个元素。

编辑:执行 aFragmentTransaction.addToBackStack(null) 后,BackStack 仍然为空

标签: androidandroid-fragments

解决方案


因为你替换它而不是添加它。这样做:

aFragmentTransaction.add(R.id.frame_container, fragment);

推荐阅读