我找不到关于此的任何信息,但是,我如何以编程方式切换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文件中没有添加任何内容来创建标签。这都是编程方式。
答案 0 :(得分:21)
尝试调用操作Bar.set Selected NavigationItem(x):
int position = 1;
getSupportActionBar().setSelectedNavigationItem(position);
答案 1 :(得分: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);
}