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

时间:2018-10-01 17:12:42

标签: java android android-tablayout

我正在使用ViewPager和TabLayout显示可以通过选择选项卡轻松切换的片段。  我有5个标签,分别是片段1、2、3、4和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

            }
        }
    }
}

谢谢。

2 个答案:

答案 0 :(得分:1)

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

viewPager.setCurrentItem(index);

索引是您要显示的片段编号。 尝试这个。希望您的问题能得到解决。

答案 1 :(得分:0)

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

BroadcastReciever内部,更改ViewPager索引,

viewPager.setCurrentItem(index);

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