2013-05-01 12 views
11

を拡張するTabActivityを実装しました。それは各タブがFragmentである5つのタブを持っています。私が探しているのは、プログラム間でタブを切り替えることです。例えばのためにタブをプログラムからアンドロイドでフラグメントから切り替えるにはどうすればいいですか?

私はTAB4に思います。ボタンをクリックすると、tab4からtab1に移動します。たくさん試しましたが、解決策を見つけることができませんでした。

は、以下にしようとしましたが、それは解決しません。 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); 
} 

答えて

12

最終的に私は賭けを切り替えることができます次のコード行を使用してタブをプログラマティックに調整してください。

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

希望するものがあります。

+0

'android.R.id.tabhost'はnullpointerexceptionをスローします。あなたは既にgetActivity.findViewById' 'findViewById(R.id.tabhost)は'情報タブインデックスが0から始まるためだけに、右のオプション –

6

この答えを見てみましょう:https://stackoverflow.com/a/5460651/198996

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

おかげで、トムは私が断片からだフラグメント – GoCrazy

+0

@Vinoから探しています活動からのthatsを考えます。 'getParent()'は、Activityを返すFragmentのメソッドです。 – ataulm

+1

@Vinoは 'getParent()'の代わりに 'getActivity()'を試します。 – TomTasche

15

は、物質的な支援のために次の方法でフラグメントからtablayoutを切り替える:

1)は、タブを変更する親アクティビティによって受信されたブロードキャストを送信します。

context.sendBroadcast(yourintent); 

2)ヴィーノの答えの変更、

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

tablayoutは、あなたのメインのXMLで定義されているようtablayoutのIDです。

+2

はい、それは動作しますが '呼んでいます。 –

関連する問題