2012-07-23 60 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); 
} 
相關問題