为什么片段管理器的getBackStackEntryCount
方法返回零?
我花了一个小时或检查了一下这个问题的答案。我已经
与getSupportFragmentManager
一起使用片段支持管理器
调用executePendingTransactions
导入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
的后堆栈中。
注意,每个FragmentManager
都有自己的back back back(因此片段的子FragmentManager
堆栈与包含Activity
的片段backbackback不同),并且它也与应用程序的活动back堆栈不同。
如果您像这样将事务添加到后堆栈,它将返回1:
fragmentManager.beginTransaction()
.replace(R.id.frame_layout, stepsFragment)
.addToBackStack(null)
.commit();
关于android - fragment 管理器的getBackStackEntryCount方法返回零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45552927/