Фрагмент back stack не работает при расширении AppCompatActivity

Я использую новую AppCompatActivity представленную в библиотеке AppCompat версии 22.1.

Когда я продлеваю это действие, кнопка возврата аппаратного обеспечения больше не удаляет задний стек моих фрагментов, вместо этого она закрывает действие.

Вот как я изменяю фрагменты в своей деятельности:

 public void changeFragment(Fragment f) { FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.fragment_holder, f); ft.addToBackStack(null); ft.commit(); } 

Если я изменю MainActivity extends AppCompatActivity до MainActivity extends Activity проблема исчезает, и я могу вернуться назад через свои фрагменты.

Изменение вызовов getFragmentManager() на getSupportFragmentManager() приводит к тому, что устройства под управлением Android <5.0 теряют тему Material, что является основной причиной внедрения AppCompatActivity в первую очередь.

Стиль, <application android:theme="@style/AppTheme"> в моем манифесте <application android:theme="@style/AppTheme">

 <style name="AppTheme" parent="Theme.AppCompat.Light"> <item name="colorPrimary">@color/primary_material_light</item> <item name="colorPrimaryDark">@color/primary_dark_material_light</item> <item name="colorAccent">@color/accent_material_light</item> </style> 

Solutions Collecting From Web of "Фрагмент back stack не работает при расширении AppCompatActivity"

Я смог решить это, переопределив onBackPressed() в моей деятельности:

 @Override public void onBackPressed() { if (getFragmentManager().getBackStackEntryCount() > 0) { getFragmentManager().popBackStack(); } else { super.onBackPressed(); } } 

Если кто-нибудь знает, почему этот дополнительный шаг необходим при использовании AppCompatActivity мне было бы интересно узнать.

Используйте getSupportFragmentManager() вместо getFragmentManager()

Вы расширяете тему приложения с Theme.AppCompat.* ?