0」はtrueとなります。mBackStack.remove(last);」で最後のバックスタックを削除しています。コードを読むことで、最後に保存したバックスタックが削除されるのが確認できました。最後に、アプリのボタンを押下してpopBackStack()の処理を確認してみましょう。popBackStackBackStackの数が「0」と表示されました。Fragmentも削除されました。バックスタックからポップされたことが確認できました。バックスタックありでFragmentを追加し、ディバイスバックを押すFragment追加時に、トランザクションをバックスタックに追加し、ディバイスのバックボタンを押します。ディバイスバックMainFragmentが削除されて、バックスタックの数が0になります。バックスタックが積まれた状態でバックボタンを押下すると、バックスタックを減算する処理になります。確認のために、onBackPressedのソースコードも読んでみましょう。onBackPressedメソッドが定義されているのはFragmentActivityクラスです。}}FragmentManager.popBackStackImmediate()が実行されています。このメソッドは、すぐにpopBackStackを実行します。バックスタックをポップします。バックスタックは減算されます。0);}FragmentManager.popBackStackImmediate()は実行結果をboolean型で返します。true;}バックスタックがある場合、FragmentManager.popBackStackImmediate()はtrueを返します。「!fragmentManager.popBackStackImmediate()」の結果はfalseになります。バックスタックがない場合はfalseが返ります。super.onBackPressed()が呼ばれます。super.onBackPressed()はActivity#finishを呼び出すので、Activityが閉じます。このケースでは、trueが返ります。MainFragmentが削除されて、バックスタックの数が0になります。Activityは閉じません。バックススタックとFragmentを追加していくFragment追加時に、トランザクションをバックスタックに追加し、さらに別のFragmentとトランザクションを追加します。複数のFragmentとバックスタックを追加SubFragmentを追加して、「2」が表示されました。バックスタックに2つのトランザクションが溜まっている状態になっています。ディバイスバックを押します。deviceバックSubFragmentが消えました。バックスタックが1つ消えたためです。続いて、popbackstackのボタンを押下します。popbackstackMainFragmentが消えました。バックスタックから取り出されたためです。このように、バックスタックを使えば、フラグメントの様々な状態を管理できます。任意のバックスタックの状態にするPOP_BACK_STACK_INCLUSIVEを使うと、引数に指定した位置までバックスタックをクリアすることができます。nullの場合は、すべてのバックスタックをクリアします。FragmentManager.POP_BACK_STACK_INCLUSIVE)}PartsFragmentを何回も追加してバックスタックを7つ積み上げてから、popBackStackInclusiveを実行します。popBackStackInclusiveバックスタックが0になりました。続いて、MainFragmentの状態まで戻せるように、引数のTAGにSubFragment.NAMEを設定します。POP_BACK_STACK_INCLUSIVEは、引数に指定した位置まで(含んで)バックスタックをクリアします。FragmentManager.POP_BACK_STACK_INCLUSIVE)}引数にTAGを指定してINCLUSIVEボタンを押します。tagSubFragment.NAMEの状態まで削除され、バックスタックが1になりました。FragmentManager.POP_BACK_STACK_INCLUSIVEを指定した時のFragmentManager.javaのコードも確認しておきましょう。1になり、条件を満たすので上記の処理が実行されます。while文でTAGの名称を探して、indexを減算しています。states.add(mBackStack.remove(i));}indexの位置までmBackStackを削除しています。stackの先出し処理です。コードを読むと、POP_BACK_STACK_INCLUSIVEで、引数に指定した位置まで(含んで)バックスタックがクリアされる理由がわかります。結論バックスタック便利な機能ですが、慣れないと挙動がわかりにくいです。インターネットで検索しても、間違った説明をしているサイトが結構あります。何度かソースコードを読んで、きちんと仕様を理解しておくことをお勧めします。