2017-08-07 19 views
0

爲什麼我的片段管理器的getBackStackEntryCount方法返回零?片段管理器的`getBackStackEntryCount`方法返回零

我花了一個小時或檢查這個問題的答案。我已經

  1. 使用的片段支持經理getSupportFragmentManager
  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)); 
} 

回答

1

getBackStackEntryCount()是0,因爲你還沒有添加任何片段交易到FragmentManager的回堆棧。

注意,每個FragmentManager有它自己的返回堆棧(這樣的片段的子FragmentManager堆將是從含Activity的片段返回堆棧不同),並且還從應用程序的活動回棧不同。

如果您要您的交易添加到像這樣後退堆棧,它將返回1:

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