Android 如何使用viewpager获取片段在Actionbar选项卡中的位置
在我的程序中,我有六个选项卡和一个包含列表的片段,每次单击一个新选项卡时,我都希望在列表视图中显示不同的数据。 如何使用位置变量来执行此操作? 实际上,我怎样才能得到正确的位置来理解选择了哪个选项卡 我已尝试在onCreate中使用此代码:Android 如何使用viewpager获取片段在Actionbar选项卡中的位置,android,Android,在我的程序中,我有六个选项卡和一个包含列表的片段,每次单击一个新选项卡时,我都希望在列表视图中显示不同的数据。 如何使用位置变量来执行此操作? 实际上,我怎样才能得到正确的位置来理解选择了哪个选项卡 我已尝试在onCreate中使用此代码: tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public
tabLayout.setOnTabSelectedListener(new
TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
通过使用上述代码中的位置,它会在列表中显示其他选项卡的不正确数据
请帮帮我 您可以在ActivityMain中编写此方法:
private void changeTbs(int position) {
if (position == 0){
//is in first tab
}
if (position == 1){
//is in seconde tab
}
if (position == 2){
//is in third
}
并在MainActivity中的oncreate
methode中执行此操作:
PagerViewAdapter ViewPager mMainPager = (ViewPager)findViewById(R.id.mainPager);
mMainPager.setOffscreenPageLimit(2);
mPagerViewAdapter = new PagerViewAdapter(getSupportFragmentManager());
mMainPager.setAdapter(mPagerViewAdapter);
mMainPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//
//this is your main answer
//
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
changeTbs(position);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
若您使用六个选项卡,那个么您必须为每个选项卡分配新的片段,通过这样做,您不需要担心选项卡的位置。通过执行此操作,可以在单击每个选项卡后添加不同的数据 相反,使用“表格布局”代替“活动选项卡”
tabLayout = (TabLayout)findViewById(R.id.tablayout);
tabLayout.addTab(tabLayout.newTab().setText("One"));
tabLayout.addTab(tabLayout.newTab().setText("Two"));
tabLayout.addTab(tabLayout.newTab().setText("Three"));
then initialize FirstPagerAdapter
fpadapter = new FirstPagerAdapter(getSupportFragmentManager(),
tabLayout.getTabCount(),
this.getApplicationContext());vpager.setAdapter(fpadapter);
class FirstPagerAdapter extends FragmentPagerAdapter {
int mNumofTabss;
private FragmentManager fragmentManager;
private Context mmcontext;
public FirstPagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabss = NumOfTabs;
}
public FirstPagerAdapter(FragmentManager fm,int NumOfTabs, Context mcontext)
{
super(fm);
this.fragmentManager = fm;
this.mmcontext = mcontext;
this.mNumOfTabss = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Fragmentone tabf = new Fragmentone();
return tabf;
case 1:
Fragmenttwo tab2 = new Fragmenttwo();
return tab2;
case 2:
Fragmentthree tab3 = new Fragmentthree();
return tab3;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabss;
}
}
我现在就试试这个。好的,告诉我结果是什么,我们可以一起解决这个问题,因为我以前做过同样的事情。它也会在第二个选项卡中显示第一个选项卡的数据。它们的顺序不正确。我使用了以下链接:。该链接对于每个选项卡的不同片段都很有效,但我希望有一个片段。