Есть много ответов на эти вопросы, но технически мой вопрос отличается, я прочитал некоторую документацию и согласился, что мы не должны использовать несколько фрагментов только в одном действии, мы должны использовать несколько действий с несколькими фрагментами в зависимости от требований проекта или спецификации пользовательского интерфейса. , поэтому архитектура моего приложения: 1. BaseActivity и все действия распространяются на этот 2. BaseFragment и все фрагменты распространяются на этот мой код:
в BaseActivity я сделал следующие функции
public void replaceFragment(int containerViewId, Fragment fragment, String fragmentTag, boolean addToBackStack) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(containerViewId, fragment, fragmentTag);
if(addToBackStack)
fragmentTransaction.addToBackStack(fragmentTag);
if(fragmentTag.matches("") && addToBackStack)
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
Чтобы добавить фрагмент в Framelayout
public void addFragment(int containerViewId, Fragment fragment, String fragmentTag, boolean addToBackStack, boolean isPending) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(containerViewId, fragment, fragmentTag);
if(addToBackStack)
fragmentTransaction.addToBackStack(fragmentTag);
if(fragmentTag.matches("") && addToBackStack)
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
if(isPending)
fragmentManager.executePendingTransactions();
}
Назад Нажмите Функциональность
public void popBackStackImmediate() {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStackImmediate();
}
Получить общее количество фрагментов
public List<Fragment> fragmentList(){
return getSupportFragmentManager().getFragments();
}
и поток FragmentA (добавить) -> FragmentB (заменить) ->
ВОПРОС 1: почему totalFragments показывает 2? пока я заменил FragmentB на A
ВОПРОС 2: когда я нажимаю кнопку «Назад», все еще отображаются 2 фрагмента и как я могу удалить их из стека?
Вопрос 3: FragmentB виден, но жизненный цикл фрагмента FragmentA тоже работает.. означает, что функции onResume и onCreate вызывают слишком странно, но верно, не знаю, почему