Android 设置表格布局的SelectedNavigationItem(位置)

Android 设置表格布局的SelectedNavigationItem(位置),android,android-toolbar,Android,Android Toolbar,我想使用PageChangeListener更改选项卡,就像使用ActionBar一样 actionBar.setSelectedNavigationItem(position); 由于我现在正在使用工具栏和Tablayout来显示片段,因此无法在ViewPager中更改onPageSelected的选项卡 private void setupViewPager(ViewPager mViewPager) { mViewPager.setAdapter(mSectionsPagerAd

我想使用PageChangeListener更改选项卡,就像使用ActionBar一样

actionBar.setSelectedNavigationItem(position);
由于我现在正在使用工具栏和Tablayout来显示片段,因此无法在ViewPager中更改onPageSelected的选项卡

private void setupViewPager(ViewPager mViewPager) {
    mViewPager.setAdapter(mSectionsPagerAdapter);

    // When swiping between different sections, select the corresponding
    // tab. We can also use ActionBar.Tab#select() to do this if we have
    // a reference to the Tab.
    mViewPager
            .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                    tabLayout.setScrollPosition(position, (float) 2323.22,true);
                }
            });

    // For each of the sections in the app, add a tab to the action bar.
    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
        // Create a tab with text corresponding to the page title defined by
        // the adapter. Also specify this Activity object, which implements
        // the TabListener interface, as the callback (listener) for when
        // this tab is selected.
        tabLayout.addTab(tabLayout.newTab().setText(mSectionsPagerAdapter.getPageTitle(i)));
    }

}

这是我的活动代码,可用于选择选项卡

public class MainActivity extends AppCompatActivity {

private PageAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    TextView mTitle = (TextView) toolbar.findViewById(R.id.toolbar_title);

    setSupportActionBar(toolbar);

    mSectionsPagerAdapter = new PageAdapter(getSupportFragmentManager(), 3);

    mViewPager = (ViewPager) findViewById(R.id.container);
    mViewPager.setAdapter(mSectionsPagerAdapter);

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

    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

            if (mViewPager.getCurrentItem() == 1) {
                Downloads frag1 = (Downloads) mViewPager.getAdapter().instantiateItem(mViewPager, mViewPager.getCurrentItem());
                frag1.refersh();
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });
在OnPageSeletd中,我使用了一个页面引用方法,这样你就可以引用任何页面。试试这个

Pageadater.java

 public class PageAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

public PageAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {
    Fragment f = null;
    switch (position) {
        case 0:
            f = new InstaDown();
            break;
        case 1:
            f = new Downloads();
            break;
        case 2:
            f = new guide();
            break;
    }
    return f;
}

@Override
public CharSequence getPageTitle(int position) {
    CharSequence f = null;
    switch (position) {
        case 0:
            f = "Home";
            break;
        case 1:
            f = "Downloads";
            break;
        case 2:
            f = "Tutorial";
            break;
    }
    return f;
}

@Override
public int getCount() {
    return mNumOfTabs;
}
}

事实上,问题是你们的标签不能在viewpager中滚动?@kishan那个么我应该如何在onPageSelected中实现它呢。我希望在页面上显示选项卡的位置已选中。请稍候,我将发布我的代码,代码的工作对我来说很好。@kishan感谢您等待您的代码:)什么是下载?什么是下载?这是我的片段。我想引用的片段。这只是下载片段中的refresh方法。算了吧。我想你制作了你的pageadapter,所以应用代码它可以工作。它仍然不工作。我想更改所选页面上的选项卡。我可以查看您的页面适配器吗?
 public class PageAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

public PageAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {
    Fragment f = null;
    switch (position) {
        case 0:
            f = new InstaDown();
            break;
        case 1:
            f = new Downloads();
            break;
        case 2:
            f = new guide();
            break;
    }
    return f;
}

@Override
public CharSequence getPageTitle(int position) {
    CharSequence f = null;
    switch (position) {
        case 0:
            f = "Home";
            break;
        case 1:
            f = "Downloads";
            break;
        case 2:
            f = "Tutorial";
            break;
    }
    return f;
}

@Override
public int getCount() {
    return mNumOfTabs;
}
}