Фрагмент (домашний фрагмент) добавляю в Activity.onCreate()
, не добавляя в бэкстек, делаю это с помощью FragmentTransaction.replace()
. После этого я добавляю каждый следующий фрагмент, используя FragmentTransaction.replace()
, и добавляю его в стопку.
У меня есть функциональность, которая очищает задний стек, оставляя видимым домашний фрагмент, для этого я использую FragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
.
Если я добавляю только 1 фрагмент в задний стек, а затем очищаю задний стек, он работает нормально, но если я добавляю более одного, то после очистки заднего стека экран становится пустым, хотя домашний фрагмент получает onStart() и onResume() и думаю, что он виден , он не получает onPause(), onStop(), пока я снова не добавлю еще один фрагмент или не покину приложение. Также, если я popBackstack()
один за другим (по действию пользователя), он работает нормально, но если я popBackstack()
в цикле (извлекая все фрагменты сразу), это не работает.
Вот код:
public void changeFragment(BaseFragment fragment, boolean addToBackStack, boolean preventDuplicate) {
Fragment topFragment = getSupportFragmentManager().findFragmentById(fragmentContainer.getId());
if (preventDuplicate && topFragment != null && fragment.getClass().equals(topFragment.getClass())) {
//Prevent adding same fragment
return;
}
FragmentTransaction transaction =
fragmentManager
.beginTransaction()
.replace(fragmentContainer.getId(), fragment);
if (addToBackStack) {
transaction.addToBackStack(null);
}
transaction.commit();
}
public void goToHome() {
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
fragmentManager.popBackStackImmediate()
- person Kamran Ahmed   schedule 27.02.2017