2012-07-23 61 views
6

我找不到任何关于此的信息,但是,如何以编程方式切换ActionBarSherlock中的标签?以编程方式在Android中使用ActionBarSherlock切换标签

通常,当我想切换视图我会使用这样的:

Intent intentSecondView = new Intent(this, SecondView.class); 
this.startActivity(intentSecondView); 

但很明显这不起作用,因为标签中的观点是碎片。

那么有没有一种方法可以在使用ActionBarSherlock时通过代码在标签之间进行切换?


这是我如何添加一个标签目前的操作栏。

在我的onCreate方法我有:

mViewPager = new ViewPager(this); 
    mViewPager.setId(R.id.pager); 

    setContentView(mViewPager); 
    ActionBar bar = getSupportActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    mTabsAdapter = new TabsAdapter(this, mViewPager); 

    mTabsAdapter.addTab(
      bar.newTab().setText("Fragment 1"), 
      MyFragment1.class, null); 
    mTabsAdapter.addTab(
      bar.newTab().setText("Fragment 2"), 
      MyFragment2.class, null); 

我在AndroidManifest文件添加什么也没有创建的选项卡。这都是编程方式。

回答

21

尝试调用actionBar.setSelectedNavigationItem(X):

int position = 1; 
getSupportActionBar().setSelectedNavigationItem(position); 
+0

非常感谢。得到它的工作!我首先调用:'ActionBar ab = getSupportActionBar();'然后'ab.setSelectedNavigationItem(1);' – w00 2012-07-23 09:49:43

+1

正确的语法是'getSupportActionBar()。setSelectedNavigationItem(1);'tho ... – shkschneider 2012-08-23 15:54:02

0

在我的应用我有一个有图片的专辑一个标签片段。当用户点击其中一张图片时,会导致该图片显示在另一个选项卡片段的ViewPager中,并使用setCurrentTabByTag()自动切换到该选项卡。

public class EditAlbumTabs extends SherlockFragmentActivity { 
    TabHost mTabHost; 
    TabsAdapter mTabsAdapter; 

    public void onPagerPositionSet(int pagerPosition, String[] imageUrls) { 
     FragmentFlash fragmentFlash = (FragmentFlash)mTabsAdapter.getFragment("flash"); 
     if (fragmentFlash != null) { 
      fragmentFlash.pagerPositionSet(pagerPosition, imageUrls); 
      **mTabHost.setCurrentTabByTag("flash");** 
     } 
    } 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.fragment_tabs_pager); 
    mTabHost = (TabHost)findViewById(android.R.id.tabhost); 
    mTabHost.setup(); 

    mViewPager = (ViewPager)findViewById(R.id.pager); 
    mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager); 
    mTabsAdapter.addTab(mTabHost.newTabSpec("album").setIndicator("Album"), 
      FragmentAlbumFlashum.class, null); 
    mTabsAdapter.addTab(mTabHost.newTabSpec("flash").setIndicator("Flash"), 
      FragmentFlash.class, null); 
} 
相关问题