使用ActionBarSherlock在Android中通过编程方式切换选项卡

6

我找不到关于这个问题的任何信息,但是,我如何在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文件中没有添加任何内容来创建选项卡。一切都是通过编程实现的。

2个回答

21

尝试调用actionBar.setSelectedNavigationItem(x):

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

非常感谢。搞定了!我首先调用了:ActionBar ab = getSupportActionBar(); 然后是 ab.setSelectedNavigationItem(1); - w00

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接