从下一个标签返回后显示第一个片段

时间:2018-01-26 07:13:45

标签: android android-fragments android-viewpager android-tablayout

我使用ViewPager和Tabs。我有3个选项卡,在第一个选项卡(Tab_1)中,我从FragmentA切换到FragmentB。然后我转到第二个标签(Tab_2)。之后我回到了Tab_1。实际上,正在显示片段B,但是当我从Tab_2返回到Tab_1时,我想要片段A显示。我想在tab1中有相同的行为,我从FragmentA切换到FragmentB,如果我传递给Tab_3并返回到Tab_1,它就是正在显示的FragmentA。我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

您是否在SetCurrentItem(int i)

的来电时ViewPager尝试了OnResume()

答案 1 :(得分:0)

mainActivity添加addtoBackStack method.follow代码下方。

private void loadfragment(Fragment fragment) {

        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();
        }

答案 2 :(得分:0)

您可以创建一个baseFragment,该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

在上面的链接中,他们解释了如何处理tablayout和tablayout的向后导航以及如何在backpressed上更改片段

相关问题