Мой проект содержит два фрагмента:
- FragmentA: фрагмент, загруженный по умолчанию при запуске приложения
- FragmentB: замените
fragmentA
, когда нажимается кнопка.
Это XML моего основного представления:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/main_fragment_container"
android:name="fragmentA"
android:layout_width="match_parent"
android:layout_height="match_parent">
</fragment>
</LinearLayout>
Когда я хочу заменить fragmentA
на FragmentB
, я использую этот код:
FragmentTransaction fragmentTransaction = getSupportFragmentManager()
.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.main_fragment_container, new FragmentB());
fragmentTransaction.commit();
Этот код работает нормально. Мой FragmentA заменяется новым FragmentB
. Но когда щелчок сделан на задней кнопке, я хочу заменить FragmentB
на fragmentA
, используя popBackStackImmediate()
.
Это код, который я использую:
if (getSupportFragmentManager().getBackStackEntryCount() > 0){
boolean done = getFragmentManager().popBackStackImmediate();
fragmentTransaction.commit();
}
Функция popBackStackImmediate
всегда возвращает false, а FragmentB
- на переднем плане.
Почему FragmentA не заменяет FragmentB, когда я вызываю popBackStackImmediate
? У кого-нибудь есть идея решить мою проблему?
заблаговременно