Backstack Проблема в фрагменте и деятельности
Предположим, что у меня всего 7 действий, скажем, A, B, C, D, E, F, G, в Activity AI есть 4 фрагмента после нажатия на 4-й фрагмент. Я запускаю Activity B, затем Activity C, D, E, F . После прихода к Деятельности F, я хочу перейти к 2 фрагментам Деятельности A, но я хочу очистить весь backstack до 2-го фрагмента Деятельности A, после нажатия кнопки "Назад" 1-й фрагмент Деятельности A будет отображаться, так как я добавляю все фрагменты в backstack, как будет Я решаю эту проблему. Помогите мне, пожалуйста
код для вызова второго фрагмента в Деятельности F
SeconFragment fragment = new SeconFragment();
addFragmentToActivity(getFragmentManager(), fragment, R.id.fragment_container_top,"secondfagment");
public void addFragmentToActivity(@NonNull FragmentManager fragmentManager,
@NonNull Fragment fragment, int frameId,String backstacklabel) {
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(frameId, fragment,backstacklabel);
transaction.commit();
}
2 ответа
Ваш вопрос немного сбивает с толку, но вот что получилось
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
Fragment SecondFrag= fm .findFragmentByTag("yourFragmentTag");
if(SecondFrag !=null){
return;
}
else{
fm.popBackStack();
}
}
В коде fm .findFragmentByTag("yourFragmentTag")
yourFragmentTag замените своим фрагментом Tag, который вы не хотите удалять из backstack
Надеюсь, что это решит вашу проблему
Использовать флаг Intent FLAG_ACTIVITY_CLEAR_TOP
чтобы начать стартовое задание A, затем проверьте, живы ли первый и второй экземпляры фрагмента. Если не перезапустить ваши фрагменты в порядке с AddToBackStack()
Fragment frag = fm.findFragmentByTag("fragmentTag");
if(frag!=null){
loadFragments(); // code to launch fragments.
}
else{
fm.popBackStack();
}