Intereting Posts
Зачем начинать использовать -libraryjars, когда я никогда не нуждался в нем раньше? Как настроить эмулятор Android Lollipop с помощью Charles Proxy? Разница между SurfaceView и View? PopBackStack () после того, как addToBackStack не работает Загрузка файла на сервер с использованием модифицированного Запрос и разрешение WRITE_EXTERNAL_STORAGE во время выполнения не влияет на текущий сеанс Полная веб-страница и отключенный метадатчик view viewport для всех мобильных браузеров ListView с первым видимым элементом, имеющим разный макет Android – лучший способ реализовать LocationListener для нескольких действий Сжатие видео на Android с использованием новой библиотеки MediaCodec Библиотека ePub для java или android Как включить маркер в описание приложения Google Play? Привет, мировой модуль ядра для android и неизвестного переселения: 27, когда insmod Где останавливать / уничтожать потоки в Android-классе? Android – изменить название версии аромата на основе типа сборки

Фрагмент 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.* ?