2012-07-23 4 views
6

Je n'ai trouvé aucune information à ce sujet, mais comment puis-je changer d'onglet par programmation dans ActionBarSherlock?Basculer par programmation sous Onglets sous Android à l'aide de ActionBarSherlock

Normalement, quand je veux changer de vue j'utiliser quelque chose comme:

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

Mais, évidemment, cela ne fonctionne pas, parce que les points de vue dans les onglets sont des fragments.

Y at-il un moyen de basculer entre les onglets par code lorsque vous utilisez ActionBarSherlock ??


C'est comme ça que j'ajoute une barre d'actions avec des onglets pour le moment.

Dans ma méthode onCreate j'ai:

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

J'ai ajouté rien dans mon dossier AndroidManifest pour créer les onglets. Tout est programmatique.

Répondre

21

Essayez d'appeler actionBar.setSelectedNavigationItem (x):

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

Merci beaucoup. Ça marche! J'ai d'abord appelé: 'ActionBar ab = getSupportActionBar();' et ensuite 'ab.setSelectedNavigationItem (1);' – w00

+1

La syntaxe correcte est 'getSupportActionBar(). SetSelectedNavigationItem (1);' tho ... – shkschneider

0

Dans mon application j'ai un fragment d'onglet qui a un album de photos. Lorsque l'utilisateur clique sur l'une des images, cette image est affichée dans un ViewPager sur l'autre fragment d'onglet et passe automatiquement à cet onglet avec 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); 
} 
Questions connexes