为什么我的片段管理器的getBackStackEntryCount
方法返回零?
我花了一个小时或检查SO来回答这个问题。我已经
了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));
}
答案 0 :(得分:2)
getBackStackEntryCount()
为0,因为您尚未向FragmentManager
后台堆栈添加任何片段事务。
请注意,每个FragmentManager
都有自己的backstack(因此Fragment的子FragmentManager
堆栈与包含Activity
的片段backstack不同,它也与应用程序的活动后备栈不同。
如果您要将事务添加到后台,那么它将返回1:
fragmentManager.beginTransaction()
.replace(R.id.frame_layout, stepsFragment)
.addToBackStack(null)
.commit();