gpt4 book ai didi

android - fragment 管理器的 `getBackStackEntryCount` 方法返回零

转载 作者:搜寻专家 更新时间:2023-11-01 09:33:05 26 4
gpt4 key购买 nike

为什么我的 fragment 管理器的 getBackStackEntryCount 方法返回零?

我已经花了一个小时或检查 SO 来寻找这个问题的答案。我有

  1. 通过 getSupportFragmentManager 使用 fragment 支持管理器
  2. 调用了executePendingTransactions
  3. 导入android.support.v4.app.Fragment

但是 getBackStackEntryCount 一直返回零。

知道为什么吗?我的代码看起来不正确吗?

这是我的代码

private void injectFragment(){

// Get the fragment
StepsFragment stepsFragment = new StepsFragment();

// Get the support fragment manager
FragmentManager fragmentManager = getSupportFragmentManager();

// Inject the fragment into a frame layout
fragmentManager.beginTransaction()
.replace(R.id.frame_layout, stepsFragment)
.commit();

// I read that I should execute pending transactions before calling
// getBackStackEntryCount
fragmentManager.executePendingTransactions();

// This log prints `getBackStackEntryCount returns 0`
int entryCount = fragmentManager.getBackStackEntryCount();
Log.v(TAG,"getBackStackEntryCount returns "+String.valueOf(entryCount));
}

最佳答案

getBackStackEntryCount() 为 0,因为您尚未向 FragmentManager 的返回堆栈添加任何 fragment 事务。

请注意,每个 FragmentManager 都有自己的后台堆栈(因此 Fragment 的子 FragmentManager 堆栈将不同于包含 Activity 的 fragment 后台堆栈),并且它也不同于应用程序的 Activity 返回堆栈。

如果您像这样将交易添加到后台堆栈,它将返回 1:

fragmentManager.beginTransaction()
.replace(R.id.frame_layout, stepsFragment)
.addToBackStack(null)
.commit();

关于android - fragment 管理器的 `getBackStackEntryCount` 方法返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45552927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com