2017-08-07 5 views
0

フラグメントマネージャのgetBackStackEntryCountメソッドがゼロを返すのはなぜですか?フラグメントマネージャの `getBackStackEntryCount`メソッドがゼロを返します

私はこの質問に答えて1時間を費やしています。私は

  1. が輸入android.support.v4.app.Fragment

  • executePendingTransactionsと呼ばgetSupportFragmentManager
  • とフラグメント・サポート・マネージャを使用しますが、ゼロを返す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()あなたはFragmentManagerのバックスタックに任意のフラグメントトランザクションを追加していないので、0であるのです。各FragmentManagerが独自backstackを有する

    注(そうフラグメントの子FragmentManagerスタックを含むActivityのフラグメントbackstack異なるであろう)、それはまた、バックアプリケーションのアクティビティスタックから区別されます。あなたはそのようなバックスタックにトランザクションを追加した場合

    、それは1が返されます:

    fragmentManager.beginTransaction() 
         .replace(R.id.frame_layout, stepsFragment) 
         .addToBackStack(null) 
         .commit(); 
    
    関連する問題