Отображение первого фрагмента после возврата со следующей вкладки

Я использую ViewPager и вкладки. У меня есть 3 вкладки, и на первой вкладке (Tab_1) я переключаюсь с FragmentA на FragmentB. Затем я перехожу ко второй вкладке (Tab_2). После этого я возвращаюсь к Tab_1. На самом деле, это фрагмент B, который отображается, но я хочу, чтобы фрагмент A показывал, когда я возвращаюсь из Tab_2 в Tab_1. Я хочу иметь такое же поведение, когда в tab1 я переключаюсь с FragmentA на FragmentB, и если я перехожу к Tab_3 и возвращаюсь к Tab_1, это FragmentA, который показывает. Как я могу это сделать?

2 ответа

Ты пробовал SetCurrentItem(int i) за ViewPager по вызову OnResume()

В mainActivity добавьте метод addtoBackStack. Ниже приведен код.

Частный void loadfragment(Фрагмент фрагмента) {

    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.frame, fragment);

fragmentTransaction.addToBackStack ("");

    fragmentTransaction.commit();

}

public void onBackPressed() {

    if (getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStackImmediate();
    } else {

        super.onBackPressed();
    }

Вы можете создать baseFragment, который обрабатывает логику навигации при нажатии и расширяет этот фрагмент до вашего фрагмента.

public abstract class BackStackFragment extends Fragment {
    public static boolean handleBackPressed(FragmentManager fm)
    {
        if(fm.getFragments() != null){
            for(Fragment frag : fm.getFragments()){
                if(frag != null && frag.isVisible() && frag instanceof BackStackFragment){
                    if(((BackStackFragment)frag).onBackPressed()){
                        return true;
                    }
                }
            }
        }
        return false;
    }

    protected boolean onBackPressed()
    {
        FragmentManager fm = getChildFragmentManager();
        if(handleBackPressed(fm)){
            return true;
        } else if(getUserVisibleHint() && fm.getBackStackEntryCount() > 0){
            fm.popBackStack();
            return true;
        }
        return false;
    }

}

https://medium.com/@nilan/separate-back-navigation-for-a-tabbed-view-pager-in-android-459859f607e4

В приведенной выше ссылке они объяснили, как обрабатывать табулирование и обратную навигацию таблообразования и изменять фрагмент на нажатой.

Другие вопросы по тегам