2012-07-23 20 views
6

Non sono riuscito a trovare alcuna informazione a riguardo, ma come posso cambiare le schede in ActionBarSherlock al livello di programmazione?Commuta le schede in Android utilizzando ActionBarSherlock

Normalmente quando voglio passare da una visualizzazione userei qualcosa di simile:

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

Ma ovviamente questo non funziona, perché il punto di vista nelle schede sono frammenti.

Quindi esiste un modo per passare da una scheda all'altra in base al codice quando si utilizza ActionBarSherlock ??


Questo è il modo in cui aggiungo attualmente una barra di azione con schede.

Nel mio metodo onCreate ho:

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

ho aggiunto niente nel mio file AndroidManifest per creare le schede. È tutto programmaticamente.

risposta

21

provare a chiamare actionBar.setSelectedNavigationItem (x):

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

Grazie mille. Ho funzionato! Ho prima chiamato: 'ActionBar ab = getSupportActionBar();' e poi 'ab.setSelectedNavigationItem (1);' – w00

+1

La sintassi corretta è 'getSupportActionBar(). SetSelectedNavigationItem (1);' tho ... – shkschneider

0

Nella mia app ho un frammento di scheda che ha un album di fotografie. Quando l'utente fa clic su una delle immagini, l'immagine viene visualizzata in un ViewPager sull'altro frammento della scheda e passa automaticamente a quella scheda 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); 
} 
Problemi correlati