TabActivity
を拡張するFragmentActivity
を実装しました。 5つのタブがあり、各タブはFragment
です。私が探しているのは、プログラムでタブを切り替えることです。
たとえば:私がtab4にいる場合。ボタンをクリックしてから移動したいtab4
〜tab1
。何度も試してみましたが、解決策が見つかりませんでした。
次のことを試しましたが、役に立ちません。
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);
}
最後に、以下のコード行を使用して、フラグメントからプログラムでタブを切り替えることができます
TabHost Host = (TabHost) getActivity().findViewById(Android.R.id.tabhost);
Host.setCurrentTab(2);
それが誰かを助けることを願っています。
マテリアルサポートでは、次の方法でフラグメントからタブレイアウトを切り替えます。
1)親アクティビティが受信したブロードキャストを送信し、親アクティビティがタブを変更します。
context.sendBroadcast(yourintent);
2.)ヴィーノの答えの修正、
TabLayout tabhost = (TabLayout) getActivity().findViewById(R.id.tabLayout);
tabhost.getTabAt(2).select();
tablayoutは、メインxmlで定義されているtablayoutのIDです。
私のメインアクティビティにタブがあります(TabLayout(TabHost(depreciated)ではなく)を使用))。最初のタブ(フラグメント)には、メインアクティビティの現在のタブを変更するためのフラグメントのクリックリスナーがあります。
以下のフラグメント内のonCreateView()メソッドで現在のタブを正常に変更します。
TabLayout tabs = (TabLayout)((MainActivity)getActivity()).findViewById(R.id.tabs);
tabs.getTabAt(1).select();
この答えを見てください: https://stackoverflow.com/a/5460651/198996
((TabActivity) getParent()).getTabHost().setCurrentTab(2)
TabHostの代わりにTabLayoutを使用している場合は、 BENN1TH の答えを修正して、うまくいくようにすることをお勧めします。
TabLayout tabs = getActivity().findViewById(R.id.tab_layout);
tabs.getTabAt(tabNumber).select();
(違いはR.id.tab_layout
)