2012-07-23 22 views
6

No pude encontrar ninguna información sobre esto pero, ¿cómo puedo cambiar las pestañas mediante programación en ActionBarSherlock?Cambia las pestañas mediante programación en Android utilizando ActionBarSherlock

Normalmente cuando quiero cambiar de vista que haría uso de algo como:

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

Pero, obviamente, esto no funciona, porque las vistas en las pestañas son fragmentos.

¿Hay alguna forma de cambiar entre pestañas por código cuando se usa ActionBarSherlock?


Así es como agrego una barra de acciones con pestañas actualmente.

En mi método onCreate que tengo:

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

añadí nada en mi archivo AndroidManifest para crear las pestañas. Todo es programáticamente.

Respuesta

21

intente llamar actionBar.setSelectedNavigationItem (x):

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

Gracias mucho. Lo tengo trabajando! Primero llamé: 'ActionBar ab = getSupportActionBar();' y luego 'ab.setSelectedNavigationItem (1);' – w00

+1

La sintaxis correcta es 'getSupportActionBar(). SetSelectedNavigationItem (1);' tho ... – shkschneider

0

En mi aplicación tengo un fragmento pestaña que tiene un álbum de fotos. Cuando el usuario hace clic en una de las imágenes, hace que esa imagen se muestre en un ViewPager en el otro fragmento de pestaña y automáticamente cambia a esa pestaña con 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); 
} 
Cuestiones relacionadas