Фрагменты в backStack - PullRequest
       46

Фрагменты в backStack

0 голосов
/ 16 апреля 2020

У меня есть ViewPager с 3 вкладками. Вкладка (3) включает 2 фрагмента (A) -> (B).

Tab(1)
Tab(2)
Tab(3) --> (B) --> (C)

Способ замены фрагментов в Tab (3):

FragmentTransaction trans = getActivity().getSupportFragmentManager().beginTransaction();
            trans.replace(R.id.B_container, new FragmentC().newInstance(), "C");
            trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            trans.addToBackStack("B->C");
            trans.commit();

Когда я в (B), и я нажимаю кнопку, и я сразу перехожу к Tab (3), пропуская (A). Вот код кнопки (B):

FragmentManager fm = getActivity().getSupportFragmentManager();
            for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
                fm.popBackStack();
            }

Все работает хорошо. Проблема в том, что я нахожусь в (B), но затем я go перехожу на Tab (1) или Tab (2) и нажимаю кнопку, когда она не работает. Пожалуйста, дайте мне знать, что я я делаю неправильно Спасибо.

// =================================== =========================================

Я попытался заменить etActivity () .getSupportFragmentManager () с getChildFragmentMaganer (). Поскольку обычный метод popBackStack () больше не работал, мне пришлось его изменить. Теперь это работает, и у меня та же проблема, хотя.

FragmentManager fm = getActivity().getSupportFragmentManager();
            for (Fragment frag : fm.getFragments()) {
                    FragmentManager childFm = frag.getChildFragmentManager();
                    if (childFm.getBackStackEntryCount() > 0) {
                        childFm.popBackStack();
                    }
                }
            }

1 Ответ

0 голосов
/ 16 апреля 2020

Попробуйте использовать getChildFragmentManager () , чтобы получить свой менеджер фрагментов. Из моего опыта, когда я нахожусь внутри фрагмента и пытаюсь поместить в него другой фрагмент, я использую getChildFragmentManager.

...