首页 > 解决方案 > 从一个片段导航到另一个片段

问题描述

我过去两天在网上冲浪寻找下一个问题的解决方案:我在 ViewPager 的选项卡中有一个适配器类我尝试使用片段管理器在点击事件中调用片段。当片段被调用时一切正常,但是当我尝试返回最后一个位置的上一个选项卡时,没有显示,而不是显示主要活动。

在适配器中:

FragmentManager fm = ((MainActivity) v.getContext()).getSupportFragmentManager();
                FragmentTransaction ft = fm.beginTransaction()
                        .add(R.id.root, fragment)
                        .addToBackStack(null);
                ft.commit();

在片段中

getFragmentManager().popBackStackImmediate();

返回上一个片段但对我不起作用,仅重定向 pfor 主要活动

标签: androidandroid-fragments

解决方案


如果您在片段中使用 viewpager,则使用片段的 childFragmentManager 而不是片段管理器。

片段类:

adapterViewPager = new MyPagerAdapter(getChildFragmentManager());
vpPager.setAdapter(adapterViewPager);

适配器类:

public class MyPagerAdapter extends FragmentPagerAdapter {
        private static int NUM_ITEMS = 3;

        public MyPagerAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        // Returns total number of pages
        @Override
        public int getCount() {
            return NUM_ITEMS;
        }

        // Returns the fragment to display for that page
        @Override
        public Fragment getItem(int position) {
            switch (position) {
            case 0: // Fragment # 0 - This will show FirstFragment
                return FirstFragment.newInstance(0, "Page # 1");
            case 1: // Fragment # 0 - This will show FirstFragment different title
                return FirstFragment.newInstance(1, "Page # 2");
            case 2: // Fragment # 1 - This will show SecondFragment
                return SecondFragment.newInstance(2, "Page # 3");
            default:
                return null;
            }
        }

        // Returns the page title for the top indicator
        @Override
        public CharSequence getPageTitle(int position) {
            return "Page " + position;
        }

    }

推荐阅读