私の場合、 getFragmentManager().getBackStackEntryCount() は常にゼロを返していました。
私の問題は、サポートフラグメントを使用していたことです:
Fragment fragment = new MyFragment();
// note getSupportFragmentManager() instead getFragmentManager()
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame, fragment)
.addToBackStack(null)
.commit();
fragmentManager.executePendingTransactions();
そして、常にゼロを返すgetFragmentManager() backStackEntryCountをチェックしました (別のフラグメント マネージャーを使用しています)。
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0 ) {
getFragmentManager().popBackStack();
}
}
正しい数値を返すgetSupportFragmentManagerの代わりに:
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0 ) {
getSupportFragmentManager().popBackStack();
}
}
それが役に立てば幸い!