我已经实施了TabActivity
,扩展了FragmentActivity
。它有5个标签,每个标签是Fragment
。我正在寻找的是以编程方式在标签之间切换。
例如:如果我在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);
}
答案 0 :(得分:23)
对于Material支持,您可以通过以下方式从片段切换tablayout:
1)发送父活动接收的广播,然后修改标签。
TabLayout tabhost = (TabLayout) getActivity().findViewById(R.id.tabLayout);
tabhost.getTabAt(2).select();
2。)修改了vino的答案,
{{1}}
tablayout是主xml中定义的tablayout的id。
答案 1 :(得分:19)
最后,我可以使用以下代码行以编程方式从片段之间切换选项卡
TabHost host = (TabHost) getActivity().findViewById(android.R.id.tabhost);
host.setCurrentTab(2);
希望它会对某人有所帮助。
答案 2 :(得分:12)
我的主要活动中有标签(使用TabLayout而不是TabHost(折旧))(带有片段),在我的第一个标签(片段)中,片段中有一个点击监听器,用于更改MainActivity中的当前标签。
我在片段中的onCreateView()方法中通过以下方法成功更改了当前选项卡。
TabLayout tabs = (TabLayout)((MainActivity)getActivity()).findViewById(R.id.tabs);
tabs.getTabAt(1).select();
答案 3 :(得分:6)
看一下这个答案:https://stackoverflow.com/a/5460651/198996
((TabActivity) getParent()).getTabHost().setCurrentTab(2)
答案 4 :(得分:0)
如果您使用的是TabLayout而不是TabHost,那么我建议对BENN1TH的答案进行修改以使其对我有用:
TabLayout tabs = getActivity().findViewById(R.id.tab_layout);
tabs.getTabAt(tabNumber).select();
(区别是R.id.tab_layout
)
答案 5 :(得分:0)
对于 kotlin ,请使用这个表单片段
activity!!.<tab_id_in_xml>.getTabAt(tab_number)!!.select()