如何在 OnClickListener 中切换标签位置或替换标签位置

How to switch tab position or replace tab position in OnClickListener

我正在使用 ViewPager 和 TabLayout 来显示可以通过选择选项卡轻松切换的片段。 我有 5 个选项卡,其中包含片段一、二、三、四和五。

在第一个片段中,我有一个按钮。如何通过单击该按钮而不是选项卡来切换到其他选项卡,例如选项卡 4。

这是主要活动

        ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

        adapter.addFragment(new Home(), "Home");
        adapter.addFragment(new speed(), "Quick Dial");
        adapter.addFragment(new hospital(), "Hospital");
        adapter.addFragment(new ambulance(), "Ambulance");
        adapter.addFragment(new funeral(), "Funeral");

        viewPager.setAdapter(adapter);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);

    }

    }
    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }

片段一包含

        @Override
        public void onClick(View v) {
            switch (getAdapterPosition()) {
                case 0:

                //Switch to tab position two
                case 1:

                //Switch to tab position three
                case 2:

               //Switch to tab position four

            }
        }
    }
}

提前致谢。

你可以在onClick(View v)中写代码

viewPager.setCurrentItem(指数);

Index 是您要显示的片段编号。 试试这个。我希望你的问题能得到解决。

您可以在 activity 中注册一个 BroadcastReciever 并在单击按钮后立即将广播从您的第一个片段发送到 activity。

BroadcastReciever 内更改 ViewPager 索引,

viewPager.setCurrentItem(index);

此外,您还可以通过意图传递数据来发送要切换到的索引。