3

Мой простой макет имеет только фрагмент заполнитель:Удалить фрагменты, которые не ставят на backstack

<FrameLayout 
    android:id="@+id/fragment_placeholder" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

я во-первых, добавить 1-й фрагмент к этому заполнителем:

fragmentTransaction.add(R.id.fragment_placeholder, firstFragment, "first"); //I did not put to backstack 

У меня есть a 2-й фрагмент, который заменяет вышеуказанный фрагмент и положить его обратно в стек:

FragmentManager fragMgr = getSupportFragmentManager(); 
FragmentTransaction fragTrans = fragMgr.beginTransaction(); 

//initialize an fragment instance 
Fragment secondFragment = initSecondFragment(); 

//replace with the fragment 
fragTrans.replace(R.id.fragment_placeholder, secondFragment, "second"); 

//Add fragment transaction to back stack 
fragTrans.addToBackStack(null); 

//commit the transaction 
fragTrans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
fragTrans.commit(); 

Позже у меня есть некоторые фрагменты заменить предыдущий фрагмент, но НЕ положить на backstack.

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

Итак, Как найти те фрагменты, которые не находятся в стеке, и как их удалить с экрана?

ответ

1

Как найти те фрагменты, которые не находятся на backstack в моем приложении

findFragmentById() вызовов или findFragmentByTag() на вашем FragmentManager.

как удалить их с экрана?

Использовать remove() с FragmentTransaction.

+0

Как проверить, добавлен ли фрагмент в Backstack или нет? –

+1

@ KK_07k11A0585: Это действительно относится к отдельному вопросу StackOverflow. При этом, если вы передаете тег 'addToBackStack()', вы можете перебирать записи заднего стека с помощью методов getBackStackEntry() 'на' FragmentManager', чтобы найти запись с нужным тегом. Фрагменты сами по себе не находятся в задней части; фрагмент * сделка * есть. – CommonsWare

+0

Я понял. Но у меня есть следующий сценарий \ n, в котором есть 3 фрагмента FragmentA1, FragmentA2, FragmentA3. Я добавил FragmentA1 и FragmentA2 в backstack, но не FragmentA3. Итак, если я нажму кнопку FragmentA3, то он заканчивает FragmentA2 и переопределяет FragmentA3 в FragmentA1. Пожалуйста, помогите мне в сортировке этой проблемы. –