web-dev-qa-db-ja.com

Androidでプログラムでタブを切り替える方法は?

TabActivityを拡張するFragmentActivityを実装しました。 5つのタブがあり、各タブはFragmentです。私が探しているのは、プログラムでタブを切り替えることです。

たとえば:私がtab4にいる場合。ボタンをクリックしてから移動したいtab4tab1。何度も試してみましたが、解決策が見つかりませんでした。

次のことを試しましたが、役に立ちません。

From 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);
}
22
vinothp

最後に、以下のコード行を使用して、フラグメントからプログラムでタブを切り替えることができます

  TabHost Host = (TabHost) getActivity().findViewById(Android.R.id.tabhost);
  Host.setCurrentTab(2);

それが誰かを助けることを願っています。

20
vinothp

マテリアルサポートでは、次の方法でフラグメントからタブレイアウトを切り替えます。

1)親アクティビティが受信したブロードキャストを送信し、親アクティビティがタブを変更します。

context.sendBroadcast(yourintent);

2.)ヴィーノの答えの修正、

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

tablayoutは、メインxmlで定義されているtablayoutのIDです。

26
Kennedy Nyaga

私のメインアクティビティにタブがあります(TabLayout(TabHost(depreciated)ではなく)を使用))。最初のタブ(フラグメント)には、メインアクティビティの現在のタブを変更するためのフラグメントのクリックリスナーがあります。

以下のフラグメント内のonCreateView()メソッドで現在のタブを正常に変更します。

TabLayout tabs = (TabLayout)((MainActivity)getActivity()).findViewById(R.id.tabs);
tabs.getTabAt(1).select();
14
BENN1TH

この答えを見てください: https://stackoverflow.com/a/5460651/198996

((TabActivity) getParent()).getTabHost().setCurrentTab(2)
6
TomTasche

TabHostの代わりにTabLayoutを使用している場合は、 BENN1TH の答えを修正して、うまくいくようにすることをお勧めします。

  TabLayout tabs = getActivity().findViewById(R.id.tab_layout);
  tabs.getTabAt(tabNumber).select(); 

(違いはR.id.tab_layout

0
lea.cotan