2013-05-01 10 views
11

Mam zaimplementowane TabActivity, który rozszerza FragmentActivity. Ma 5 kart, każda karta to Fragment. To, czego szukam, to programowe przełączanie między kartami.Jak przełączać zakładki programowo w Androidzie z fragmentu?

Na przykład: jeśli jestem w tab4. Kliknij przycisk Chcę przenieść z tab4 do tab1. Próbowałem dużo, ale nie mogłem znaleźć rozwiązania.

Próbowano następujących, ale to nie pomaga.

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

Odpowiedz

12

Wreszcie mogę przełączyć zakład ween tabulatory programowo z Fragmenty przy użyciu następującego wiersza kodu:

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

Mam nadzieję, że pomoże to ktoś.

+0

'android.R.id.tabhost' rzuci wyjątek zerowy. Już wywołujesz 'getActivity.findViewById' ' findViewById (R.id.tabhost) 'jest właściwą opcją –

6

Spójrz na to odpowiedź: https://stackoverflow.com/a/5460651/198996

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

Dzięki Tomowi myślę, że to z działalności, której szukam z Fragmentu – GoCrazy

+0

@Vino To z Fragmentu. 'GetParent()' jest metodą w Fragment, która zwraca działanie. – ataulm

+1

@Vino spróbuj 'getActivity()' zamiast 'getParent()'. – TomTasche

15

wsparcia materialnego przełączeniu tablayout z fragmentu w jeden z następujących sposobów:

1) przesyła transmisję, który jest odbierany przez aktywność macierzystego, który następnie modyfikuje kartę.

context.sendBroadcast(yourintent); 

2.) Modyfikacja odpowiedzi Vino, w

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

tablayout jest id tablayout jak zdefiniowano w głównym xml.

+2

Tak, działa, tylko dla indeksów kart informacyjnych zaczyna się od 0. –

Powiązane problemy