2015-07-01 10 views
13

Quando utilizzo le schede ActionBar, utilizzo questo codice.Come ottenere l'indice di tabulazione selezionato in TabLayout?

private int getCurrentTabIndex() { 
    ActionBar actionBar = activity.getSupportActionBar(); 
    ActionBar.Tab selectedTab = actionBar.getSelectedTab(); 
    if(selectedTab == null){ 
     return 0; 
    } 

    return selectedTab.getPosition(); 
} 

Ma come posso farlo utilizzando TabLayout?

+0

int tab_position = tabLayout.getSelectedTabPosition(); lo stesso può essere ottenuto senza sovrascrivere, l'ho provato con targetSDK = 24 –

risposta

28

Utilizzare OnTabSelectedListener.

E quindi in questo listener ottenere il getPosition().

Qualcosa di simile a questo:

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener(){ 
    @Override 
    public void onTabSelected(TabLayout.Tab tab){ 
     int position = tab.getPosition(); 
    } 
}); 

UPDATE

Questo metodo setOnTabSelectedListener() è deprecato. Utilizzare addOnTabSelectedListener(OnTabSelectedListener)

+6

Si noti che se si utilizza [setupWithViewPager()] (https://developer.android.com/reference/android/support/design/widget/TabLayout .html # setupWithViewPager (android.support.v4.view.ViewPager)) dovresti estendere [TabLayout.ViewPagerOnTabSelectedListener] (https://developer.android.com/reference/android/support/design/widget/TabLayout.ViewPagerOnTabSelectedListener.html) invece di 'TabLayout.OnTabSelectedListener' e assicurarsi di chiamarlo dopo' setupWithViewPager() 'se si desidera l'integrazione di default con la funzionalità' ViewPager'. – ianhanniballake

+5

'setOnTabSelectedListener()' è ora deprecato. –

+4

Questo metodo 'setOnTabSelectedListener()' è deprecato. Usa invece 'addOnTabSelectedListener (OnTabSelectedListener)'. – Badr

25

setOnTabSelectedListener è ora obsoleto. puoi invece utilizzare addOnTabSelectedListener. Per rimuovere l'ascoltatore è possibile utilizzare removeOnTabSelectedListener

mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      int position = tab.getPosition(); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 
     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 
     } 
    }); 
+0

mi ha aiutato, grazie – TheLastSummer

6

semplicemente Puoi farlo chiamando getSelectedTabPosition() sul tuo TabLayout istanza come:

int tab_position=tabLayout.getSelectedTabPosition(); 
0

se si utilizza schede con viewpager poi l'attività richiesta può essere eseguita come segue:

utilizzare il seguente g codice dopo tabLayout.setUpWithViewPager(viewPager)

+1

setOnTabSelectedListener è ora deprecato, è possibile utilizzare addOnTabSelectedListener. vedere la risposta di Doron http://stackoverflow.com/a/38094050/1970301 – pask23

Problemi correlati