У меня есть несколько фрагментов. Они переходят с использованием анимации скольжения. MainFragment-> Fragment2 -> Fragment3.Управление фрагментами back-stack на android
1) Я хочу очистить backstack, когда пользователь достигает MainFragment, оставляя только этот фрагмент в стеке.
2) В некоторых случаях я хочу удалить предыдущий элемент в стеке. Скажите, когда пользователь нажмет кнопку назад и переместится из фрагмента3 => фрагмент2.
Я показал свой код ниже. Если я использую этот метод, анимации переходов фрагментов будут испорчены. Я не уверен, как реализовать второе требование.
Другой вопрос, когда я удаляю фрагменты из backstack, они попадают?
private void replace(Fragment fragment)
{
if(fragment == null) return;
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.fragment_enter,
R.anim.fragment_exit);
fragmentTransaction.replace(R.id.fragment, fragment);
fragmentTransaction.addToBackStack(fragment.toString());
fragmentTransaction.commit();
if(fragment instanceof MainFragment)
clearBackStack();
}
public void clearBackStack() {
if (fragmentManager.getBackStackEntryCount() > 0) {
FragmentManager.BackStackEntry first = fragmentManager.getBackStackEntryAt(0);
fragmentManager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
Основываясь на вашей ссылке «Например, вот как вы можете заменить один фрагмент на другой и сохранить предыдущее состояние в заднем стеке:« Мне кажется, мне нужно заменить. – pats
@pats. В вашем случае, вероятно, вам лучше называть метод добавления, как я сказал выше. Я дал ссылку как хорошую документацию и сравнение. Если вы «добавите» фрагмент 3 после использования или добавления фрагмента2, тогда обратная клавиша покажет фрагмент2. Я обновлю свои заметки, чтобы это было ясно. –
Спасибо за ваше предложение, я устал add(), но он не изменил фрагмент. Он застрял на MainFragment. Моя цель здесь заключается в том, когда мы достигаем Mainfragment с любого пути, весь задний стек должен быть уничтожен. Но традиции фрагментов должны работать по назначению. – pats