2013-05-01 9 views
11

Ho implementato un TabActivity che estende FragmentActivity. Ha 5 schede ciascuna scheda è una Fragment. Quello che sto cercando è di passare tra le schede a livello di codice.Come passare da una parte all'altra delle schede in Android da un frammento?

Ad esempio: se sono in tab4. Sul pulsante clic voglio passare da tab4 a tab1. Ho provato molto ma non ho trovato la soluzione per questo.

Provato con il seguente ma non aiuta.

Da SecondTab

public void switchTabInActivity(String value){ 
    FirstTab parent; 
    parent = (FirstTab) getActivity().getParent(); 
    parent.switchTab(value); 
} 

TabActivity

/** To Change Tab*/ 
public void switchTab(String tabno){ 
    this.onTabChanged(tabno); 
} 

risposta

12

Finalmente posso passare scommessa ween le schede programmaticamente da Fragments utilizzando la seguente riga di codice

TabHost host = (TabHost) getActivity().findViewById(android.R.id.tabhost); 
    host.setCurrentTab(2); 

Spero che possa aiutare qualcuno.

+0

'android.R.id.tabhost' genererà un'eccezione nullapoint. Stai già chiamando 'getActivity.findViewById' ' findViewById (R.id.tabhost) 'è l'opzione giusta –

6

Date un'occhiata a questa risposta: https://stackoverflow.com/a/5460651/198996

((TabActivity) getParent()).getTabHost().setCurrentTab(2) 
+0

Grazie Tom penso che è da attività che sto guardando dal frammento – GoCrazy

+0

@Vino che proviene dal frammento. 'GetParent()' è un metodo in Fragment che restituisce l'attività. – ataulm

+1

@Vino prova 'getActivity()' invece di 'getParent()' allora. – TomTasche

15

per il supporto materiale si passa il tablayout da un frammento nei seguenti modi:

1) inviare una trasmissione che si riceve dall'attività madre che poi modifica la scheda.

context.sendBroadcast(yourintent); 

2.) Una modifica della risposta di vino,

TabLayout tabhost = (TabLayout) getActivity().findViewById(R.id.tabLayout); 
tabhost.getTabAt(2).select(); 

tablayout è l'id della tablayout come definito nel XML principale.

+2

Sì, funziona, solo per gli indici della scheda informativa inizia da 0. –

Problemi correlati