为何getBackStackEntryCount()始终返回0?已尝试多种方法仍未解决
问题解答
首先纠正你的误解:getBackStackEntryCount()返回的是被添加到返回栈的Fragment事务数量,不是所有已提交的事务数量。只有当你在Fragment事务中调用addToBackStack()方法时,该事务才会被纳入返回栈的统计范围。
你的代码里只执行了add和commit,没有调用addToBackStack(),所以这个事务根本没被加入返回栈,getBackStackEntryCount()自然返回0——这是完全正常的行为,和你尝试的commitNow()、executePendingTransactions()、生命周期回调时机都无关,这些操作只是影响事务的执行时机,不会改变事务是否进入返回栈的事实。
要让getBackStackEntryCount()返回1,你需要在事务链中添加addToBackStack(),示例代码如下:
FragmentManager fm = getSupportFragmentManager(); Fragment fragment = new CrimeFragment(); fm.beginTransaction() .add(R.id.fragment_container, fragment) .addToBackStack(null) // 传入null或自定义事务名称,将事务加入返回栈 .commit(); // 若想立即获取准确计数,可调用executePendingTransactions()同步执行事务 fm.executePendingTransactions(); Log.d(MAIN_ACTIVITY_LOG_TAG, Integer.toString(fm.getBackStackEntryCount())); // 此时返回1
内容的提问来源于stack exchange,提问作者VanechikSpace
相关产品推荐
相关产品推荐

