2012-07-23 15 views
6

Ich konnte keine Informationen darüber finden, aber, wie kann ich programmgesteuert Registerkarten in ActionBarSherlock wechseln?Programmgesteuert Registerkarten in Android mit ActionBarSherlock

Normalerweise, wenn ich will, Ansichten wechseln wir so etwas wie verwenden würden:

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

Aber offensichtlich funktioniert das nicht, weil die Ansichten in den Registerkarten Fragmente sind.

Also gibt es eine Möglichkeit, zwischen den Tabs durch Code zu wechseln, wenn Sie ActionBarSherlock verwenden ??


So füge ich eine Aktionsleiste mit Tabs hinzu. i

In meiner onCreate Methode habe:

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

ich nichts in meiner AndroidManifest Datei hinzugefügt, um die Registerkarten zu erstellen. Es ist alles programmatisch.

Antwort

21

Try Aufruf actionBar.setSelectedNavigationItem (x):

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

Vielen Dank. Habe es funktioniert! Ich habe zuerst aufgerufen: 'ActionBar ab = getSupportActionBar();' und dann 'ab.setSelectedNavigationItem (1);' – w00

+1

Korrekte Syntax ist 'getSupportActionBar(). SetSelectedNavigationItem (1); 'tho ... – shkschneider

0

In meiner app ich ein Tab-Fragment, die ein Album mit Bildern hat. Wenn der Benutzer auf eines der Bilder klickt, wird das Bild in einem ViewPager auf dem anderen Registerkartenfragment angezeigt und automatisch mit setCurrentTabByTag() auf dieses Register umgeschaltet.

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); 
} 
Verwandte Themen