如何在 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);
此外,您还可以通过意图传递数据来发送要切换到的索引。
我正在使用 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);
此外,您还可以通过意图传递数据来发送要切换到的索引。