getBackStackEntryCount

getBackStackEntryCount

为什么片段管理器的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/

10-10 16:46