Android 如何使用viewpager获取片段在Actionbar选项卡中的位置

Android 如何使用viewpager获取片段在Actionbar选项卡中的位置,android,Android,在我的程序中,我有六个选项卡和一个包含列表的片段,每次单击一个新选项卡时,我都希望在列表视图中显示不同的数据。 如何使用位置变量来执行此操作? 实际上,我怎样才能得到正确的位置来理解选择了哪个选项卡 我已尝试在onCreate中使用此代码: tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public

在我的程序中,我有六个选项卡和一个包含列表的片段,每次单击一个新选项卡时,我都希望在列表视图中显示不同的数据。 如何使用位置变量来执行此操作? 实际上,我怎样才能得到正确的位置来理解选择了哪个选项卡

我已尝试在onCreate中使用此代码:

      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;
}
}

我现在就试试这个。好的,告诉我结果是什么,我们可以一起解决这个问题,因为我以前做过同样的事情。它也会在第二个选项卡中显示第一个选项卡的数据。它们的顺序不正确。我使用了以下链接:。该链接对于每个选项卡的不同片段都很有效,但我希望有一个片段。