SlidingTabLayout getCurrentItem() onClick() 抽屉菜单项

SlidingTabLayout getCurrentItem() on onClick() drawer menu item

如何在单击抽屉菜单上的项目时更改 HomeActivity 上的当前选项卡?

视图创建于 SlidingTabsBasicFragment.java。它呼吁 HomeActivity.java DrawerMenuHomeActivity 中,因此我需要在单击抽屉菜单上的项目时更改 HomeActivity 上的当前选项卡。

PS:对不起我的英语:)

HomeActivity.java

...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(com.tagwishes.fc.R.layout.activity_home);




    if (savedInstanceState == null) {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        SlidingTabsBasicFragment fragment = new SlidingTabsBasicFragment();

        transaction.replace(R.id.sample_content_fragment, fragment);
        transaction.commit();

    }

...

我需要这样的东西:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(com.tagwishes.fc.R.layout.activity_home);




    if (savedInstanceState == null) {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        SlidingTabsBasicFragment fragment = new SlidingTabsBasicFragment();

        transaction.replace(R.id.sample_content_fragment, fragment);
        transaction.commit();

    }

    btn = (Button) findViewById(R.id.btn);

    OnClickListener oclBtn = new OnClickListener() {
        @Override
        public void onClick(View v) {

            //HOW TO GET mViewPager
            mViewPager.setCurrentItem(3);// 3 FOR EXAMPLE

        }
    };


    btn.setOnClickListener(oclBtn);

mViewPagerSlidingTabsBasicFragment.class

中调用
    @Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    // BEGIN_INCLUDE (setup_viewpager)
    // Get the ViewPager and set it's PagerAdapter so that it can display items
    mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
    mViewPager.setAdapter(new SamplePagerAdapter());
    // END_INCLUDE (setup_viewpager)

    // BEGIN_INCLUDE (setup_slidingtablayout)
    // Give the SlidingTabLayout the ViewPager, this must be done AFTER the ViewPager has had
    // it's PagerAdapter set.
    mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
    mSlidingTabLayout.setCustomTabView(R.layout.custom_tab, 0);



    //mSlidingTabLayout.setSelectedIndicatorColors(R.color.bg_register);
    mSlidingTabLayout.setViewPager(mViewPager);
    // END_INCLUDE (setup_slidingtablayout)




}

添加侦听器NavigationDrawer 布局。并关联 ActionBarDrawerToggle:

ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout /* your drawer layout reference */,
            R.drawable.ic_drawer, R.string.drawer_open,
            R.string.drawer_close) {

        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            /* do what you want with View Pager */
            mViewPager.setCurrentItem(item_id);
        }

        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }
    });  

ViewPager 可以在 onCreate() 中初始化:

ViewPager mViewPager = findViewById(R.id.pagerId);
// add adapter
mViewPager.setAdapter(mAdapter /* Your adapter */);

我解决了我的问题:

所以我将 SlidingTabsBasicFragment.class OnViewCreated() 代码复制到 HomeActivity.class 并删除 SlidingTabsBasicFragment.class。决赛 HomeActivity.class

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(com.tagwishes.fc.R.layout.activity_home);



    mViewPager = (ViewPager) findViewById(R.id.viewpager);
    mViewPager.setAdapter(new SamplePagerAdapter());

    // END_INCLUDE (setup_viewpager)

    // BEGIN_INCLUDE (setup_slidingtablayout)
    // Give the SlidingTabLayout the ViewPager, this must be done AFTER the ViewPager has had
    // it's PagerAdapter set.
    mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs);
    mSlidingTabLayout.setCustomTabView(R.layout.custom_tab, 0);



    //mSlidingTabLayout.setSelectedIndicatorColors(R.color.bg_register);
    mSlidingTabLayout.setViewPager(mViewPager);
    // END_INCLUDE (setup_slidingtablayout)

现在我可以实现 oncliklistener 并使用 mViewPager.setCurrentItem(position);

更改选定的选项卡