2015-09-03 1 views
1

Как изменить текущую вкладку на HomeActivity Когда нажата кнопка в меню ящика?SlidingTabLayout getCurrentItem() on onClick() элемент меню ящика

View created on SlidingTabsBasicFragment.java. Он призвал HomeActivity.java DrawerMenu в HomeActivity, так что мне нужно изменить текущую вкладку на 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); 

mViewPager называется в SlidingTabsBasicFragment.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) 




} 
+0

Попробуйте статический экземпляр ViewPager, он, безусловно, будет работать – Abhishek

+0

Не могли бы вы привести пример кода, пожалуйста? –

ответ

0

я решить мою проблему:

так я скопировать 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 (положение);

0

Добавить Приёмник 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 */); 
+0

mViewPager уже вызван в SlidingTabsBasicFragment.java. Мне нужно сделать mViewPager.setCurrentItem (position) в HomeActivity. –