Ответ 1
Попробуйте вызвать actionBar.setSelectedNavigationItem(x):
int position = 1;
getSupportActionBar().setSelectedNavigationItem(position);
Я не мог найти информацию об этом, но как я могу программно переключаться с вкладками в 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 для создания вкладок. Все это программно.
Попробуйте вызвать actionBar.setSelectedNavigationItem(x):
int position = 1;
getSupportActionBar().setSelectedNavigationItem(position);
В моем приложении у меня есть один фрагмент вкладки, в котором есть альбом с картинками. Когда пользователь нажимает на одно из изображений, это приводит к тому, что изображение отображается в 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);
}